1 接口
接口在结构上与抽象类有些相似,接口之间也可以继承,每个接口经编译后为独立的字节码文件。
但接口内部只能包含公有静态常量和公有抽象实例方法
在Java接口中,编译器将常量的定义默认为public static final类型的静态常量,不论是否使用了这些修饰符,它都是这样处理的。
所以在定义常量时,可以只给出其数据类型说明和常量名,同时,定义时要为每个常量都赋值。因为成员方法都是抽象的,在定义成员方法时也可以省略关键字abstract,它默认也是抽象的
2 接口与接口之间的继承
接口和类一样,也可以继承。不过,类仅支持单继承,而接口既
支持单继承,也支持多重继承。通过继承,一个接口可以继承父接口
中的所有成员。接口之间的继承也是通过关键字extends来说明的。
接口的多继承示例:
public interface SubMathInterface
extends MathInterface, PhysicalInterface{
double minuteToRadian();//分转换为弧度
double RadianToMinute();//弧度转换为分
double secondToRadian();//秒转换为弧度
double radianToSecond();//弧度转换为秒
}
通过继承,在子接口SubMathInterface中不仅有此处定义的四个方
法,而且也继承了父接口MathInterface、PhysicalInterface中的所
有常量和方法
3 类与接口之间的继承
在Java中,要让接口发挥其功能,需定义一个普通的类,在这个类
中要覆盖掉接口中的所有方法,以便将其实现,称为该类对接口的实现,
实现接口是通过关键字implements来说明的。
注意:定义一个类来实现接口时,需要在类中覆盖掉接口中的所有方法,
不能有选择地实现其中的某些方法,否则只能将这个类定义成一个抽象
类。(教材P146-148例子1及相应的UML图)
4 抽象类与接口的比较
数据域区别:在接口中只能定义常量;抽象类的数据域则既可定义常量、也可定义变量。
方法的区别:接口中的方法必须是公有抽象的实例方法,没有其它类型的方法(包括构造方法也不存在);抽象类中的方法没有限制(存在构造方法,但不能用其实例化对象),但其抽象方法必须是可访问的抽象实例方法。
继承的区别:接口之间可以存在多重继承,接口不能继承类;类之间只能单重继承,并且可以实现多个接口。
版权声明:本文为m0_52842652原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。