【java】接口(interface)

原创
2016/11/12 23:00
阅读数 44

定义

java接口是一系列方法的声明,是一系列方法特征的集合,但是没有方法的实现。可以被不同地方的不同类实现不同的行为(功能)。

特点

1. 不能实例化;(可有父接口)

2. 声明的成员自动设置为public,故不能为私有,可以有静态和final属性;

3. 不能出现方法体的实现;

4. 实现(implements)某接口,就必须实现其中声明的所有方法。

使用接口的好处

接口用来规范类,可以降低代码之间的耦合度;

接口实现类似于多继承的功能;

提高代码的复用性、可扩展性和可维护性。

与继承

为数据的安全性,继承是一种单继承,只有一个直接父类,之类可以复用父类的部分代码,但是一个类可以实现多个接口。

接口与继承的双重设计保持了类的数据的安全性也变相实现了多继承。

面向接口编程

(1)what

开发系统时,主体架构使用接口,接口构成系统的骨架。

通过更换实现接口的类来更换系统的实现。

(2)step

1. 抽象出接口:将多个类存在的共同的方法特征抽象出来,定义共同方法;

2. 实现接口:不同类实现接口中定义的方法实现不同功能;

3. 使用接口:让接口构成系统的骨架,定义方法,用接口作为参数,调用时实例化不同的对象。

接口中定义常量

常量可以防止变量在运行期间被任意修改。

由于接口声明的变量在编译时会自动加上public static final的修饰符因此,接口是生命常量的最佳地点。

单继承的弊端

若每个类都有一个超类,再提供一个抽象父类,就要在每个类的父类加父类,或者给他们的父类的父类加父类,知道移动到类等级结构的最顶端。这样一个具体类的可插入新的设计,就变成对整个等级结构中的所有类的修改。

一个类可实现多个接口,而且该类还会影响其子类,但不会超类。

等级结构

接口(以及抽象类:方法有简单的实现)一般用来作为一个类型的等级结构的起点。

分类

1. 单方法接口:只有实现该接口(重写此唯一方法),当发生变动时,自动调用该方法;

2. 标识接口:没有方法和属性,不对实现它的类有任何语意上的要求,仅表明实现它的类属于特定的类型(传递);

3. 常量接口:声明后使用,不建议。

【例】

[public] interface_name [extends father_interface_name_list]

{//定义接口

//adstracted methods

[public][static][final] type variable_name = variable_value;

}

[modifier]class class_name [extends father_class_name][implements interface1,intercafe2...]

{//实现接口

//the variables and methods of class;

//whrite all methods for all interface,and implements all interface;

}

与抽象类

(1)实现上

抽象类有对部分方法的部分实现。

如果向一个抽象类加入一个新的具体方法时,那么它所有之类一次性得到该方法,若是要想接口加入新的方法,那么实现该接口的所有类就只能在实现该方法才行,这是接口的缺点。

抽象类作为类型定义工具的效能有很大的折扣,而类可以实现多个接口,从而可以有多种类型。

接口是定义混合类型的理想工具

(2)语法上

1. extends || implements//继承在前

2. 可有非静态成员 || 成员一定是静态的,且数据成员只能是常量

3. 继承“is-a”关系 || “like-a”关系,引用

4. 之类继承所有方法 || 类必须实现所有接口的所有方法

5. 默认friendly权限,可重新定义和赋值 || public static [final],数据成员必须给初值,且不可重新定义和改变其值

 

 

参考:http://blog.csdn.net/xinxin19881112/article/details/2944771

http://baike.baidu.com/link?url=6Gs5rIcuYO06DgVme8NS3Lm8D8pYejmDWSB1FA4H5aAnalOD74PbCLQZqM8yZYygYi1TLPaMr1e0gFZFliSqNa

展开阅读全文
打赏
1
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
1
分享
返回顶部
顶部