接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。所以接口中的所有方法都必须实现
子类如果是非抽象类,那么一定要实现父类中所有的抽象方法,但是,如果子类也是抽象类,那么可以不实现父类中所有的抽象方法,可以实现一部分抽象方法。
多继承虽然能使子类同时拥有多个父类的特征,但是其缺点也是很显著的
(1)如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该变量时将产生歧义,无法判断应该使用哪个父类的变量
(2)如果在一个子类继承的多个父类中拥有相同方法,子类中有没有覆盖该方法,那么调用该方法时将产生歧义,无法判断应该调用哪个父类的方法
在接口中不能有实例变量,只能有静态的常量,不能有具体的方法(包含方法体),只能有抽象方法,因此也就摒弃了多继承的缺点。
|