java 抽象类 接口

1650阅读 0评论2014-06-10 hubertx
分类:Android平台

接口和抽象类显著的共同点是接口和抽象类都可以有抽象方法。 
接口和抽象类的不同点有: 
           (1)抽象类可以有实例变量,而接口不能拥有实例变量,接口中的变量都是静态(static)的常量(final)。 
           (2)抽象类可以有非抽象方法,而接口只能有抽象方法。

 

java允许一个接口继承多个父接口,也允许一个类实现多个接口,而这样的多继承有上面提到的缺点马? 
答案是没有,这是由接口的抽象性决定的。 
正如前面介绍的,在接口中不能有实例变量,只能有静态的常量,不能有具体的方法(包含方法体),只能有抽象方法,因此也就摒弃了多继承的缺点。 
对于一个类实现多个接口的情况,因为接口只有抽象方法,具体方法只能由实现接口的类实现,在调用的时候始终只会调用实现类的方法(不存在歧义), 因此不存在多继承的第二个缺点;而又因为接口只有静态的常量,但是由于静态变量是在编译期决定调用关系的,即使存在一定的冲突也会在编译时提示出错;而引 用静态变量一般直接使用类名或接口名,从而避免产生歧义,因此也不存在多继承的第一个缺点。 
对于一个接口继承多个父接口的情况也一样不存在这些缺点。 

上一篇:android binder
下一篇:没有了