1.抽象类(abstract class):
1.Java中,把类或者类的某些方法设定为abstract(只能修饰类和方法,不能修饰属性),
这该类为抽象类。
2.可声明方法而不实现。
3.被声明为abstract的方法不能包含方法体。
4.抽象类不能被实例化,但是可以创建一个对象时期指向具体子类的实例,子类中提供
对抽象方法的具体实现,否则该子类也是抽象类。
5.
2.接口(interface)
1.接口就是多个方法的一个集合。
2.接口中的成员变量都是static final类型的
3.抽象类与接口相同点:
1.都不能被实例化
2.子类只有实现了接口或抽象类中的方法才能被实例化。
4.抽象类与接口不同点:
1.接口只有定义,方法不能在接口中实现;
抽象类可以有定义和实现,即方法可在抽象类中实现。
2.接口用implements,一个类可实现多个接口;
抽象类用extends,一个类只能继承一个抽象类。
3.接口强调特定功能的实现,理念是“has a”;
抽象类强调所属关系,理念是“is a”。
4.接口中的成员变量默认为 public static final,必须有初值;
所有成员方法都是 public abstract 的,并且只能被这两个修饰。
5.抽象类可以有自己的成员变量,也可以有非抽象的成员方法;
成员变量默认为default(本包可见),也可以为其他;
抽象成员方法(其前有abstract修饰)不能用private、static、synchronize、
native等修饰;
6.用抽象类,充当公共类,不适用于日后代码修改;
用接口,便于日后维护或者添加删除方法。