抽象类
1.抽象类中可以包含任意成分,如构造器、静态代码块、抽象方法、普通方法、内部类、成员变量等。所有抽象类可以有抽象方法,也可以没有抽象方法。
2.抽象类是不允许被用来实例化的,只能通过extends的子类来重写实现。
3.一个子类只能extends一个抽象类。
接口类
1.接口是抽象类的一种特例,不能有自己的构造函数,并且没有普通的成员变量。每个函数的默认修饰符都是public abstract,所以接口类也没有普通函数,只有抽象方法。特殊的,接口类的成员变量的修饰符默认为public static final,保证所有的子类都能使用该变量,并且不允许修改。
2.接口也不允许被实例化,只能通过implements的子类来重写实现。
3.一个子类可以implements多个接口。
值得注意的一点是:抽象方法是不可以使用private、final、static来修饰的,因为抽象方法实际上是等待子类重写来实现的。如果用了这三个修饰符,那就无法在子类中进行正常的重写了,所以这是冲突的。