Java中abstract与interface
抽象类(abstract class)的特点:
1.抽象类、抽象方法都必须使用abstract修饰。
2.抽象类中,可以有非抽象方法,甚至可以是没有任何方法或变量的空类。
对于抽象类中不定义抽象方法的用意在于:使该类不能被创建对象。
3.抽象方法,是不能有方法体的。
对于抽象方法的访问限制符,可以是public、protected、不写。
4.抽象类,不能使用new创建对象。
5.抽象类的抽象方法,如果只有部分抽象方法被子类重写,则该子类依然是抽象类;如果抽象类的全部抽象方法被子类重写,则该子类可以是普通类,当然也可以是抽象类。
接口(interface):
接口可以认为是一个特殊的抽象类:该抽象类中的方法都是抽象的,则这个抽象类就可以用接口的形式来描述。
1.interface中,有定义常量,抽象方法。
对于常量,默认使用的修饰符是:public static final.
对于抽象方法,默认使用的修饰符是:public abstract.
修饰符都只能是给定的任意组合,当然都是可以不写的,不管哪种,表示的效果都是一样的。
2.接口可以被类多重实现。
3.接口与接口之间,只能通过extends进行扩展。即称为:接口与接口之间拥有继承关系。
虽然是继承(使用extends),但是可以写多个,即类似于多重继承。例如:
Inter1 ,Inter2都是interface,则有 interface Inter3 extends Inter1,Inter2{}是正确的。
对于普通类,Cla1,Cla2,都是Class,但是Class Cla3 extends Cla1,Cla2{}是错误的。