抽象类VS接口:
抽象类是对子类共有特性的抽象;接口是抽象方法的集合,是一种特殊的抽象类。
不同点:
1、关键字:包含抽象方法的类是抽象类,抽象类使用abstract修饰;接口使用interface修饰。
(1)抽象方法没有方法体;
(2)抽象方法不能被private修饰,因为抽象方法让继承之后的子类重写。
(3)抽象类中可以没有抽象方法,但抽象方法必须在抽象类中。
(4)子类继承抽象类,要么实现全部抽象方法,要么将子类设为抽象类。
(5)接口创建好后,需要其他类来实现接口。
2、结构组成:抽象类中包含抽象方法、普通方法、字段;接口中只包含静态常量(static final)和抽象方法。
3、子类使用:使用extends关键字继承抽象类;使用implents关键字实现接口。
4、子类限制:一个子类只能继承一个抽象类;一个子类可以实现多个接口。
5、关系:一个抽象类可以实现若干个接口;一个接口可以通过extends关键字继承多个父接口。
6、构造器:抽象类中可以有构造器,只是不能直接创建抽象类的对象;接口没有构造器。
相同点:
都不能被实例化,抽象类的子类必须实现抽象方法才能被实例化;接口通过继承的方法在子类中重写抽象方法。都是为了更好实现多态。
意义:
抽象类和抽象方法的意义:为了被其它类继承并重写抽象方法。抽象类是一种校验机制,降低代码出错率。
接口:接口是抽象类的更进一步,突破单继承的限制。