1 抽象类
1.1抽象类定义
如果一个类中没有包含足够的信息来描绘一个具体的对象,我们把这种类定义为抽象类,
1.2抽象类的特征
1)不能用来实例化对象,所以抽象类必须被继承才能够被使用,其他的功能和普通类相同。
2)一个类只能继承一个抽象类。
3)抽象类修饰符不能是private
4)抽象类不一定包含抽象方法,当抽象方法的类一定是抽象类。
5)构造方法,类方法不能声明为抽象方法。
6)抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非子类也是抽象类。
2 接口
2.1接口的定义
在软件工程中,接口泛指供别人调用的方法。
1)接口中所有方法不能具体实现。
2)在接口中所有方法必须是抽象类。
2.2接口的特征
1)接口中只定义抽象方法,这些方法默认都是public abstract的,在方法声明时可以省略修饰符。
2)在接口中定义实例变量,非抽象实例方法以及静态方法都是不允许的。
3)接口中没有构造方法,也不能被实例化。
4)一个接口不能实现另一个接口,但可以多继承其他接口。
5)接口必须通过类实现他的抽象方法
6)如果一个类不能实现完接口中的抽象方法,那么这个类我们应设计为抽象类。
7)不允许创建接口的实例,但是允许定义接口类型的引用变量引用实现该接口的类的实例。
2.3接口和抽象类的区别
语法层面上的区别
1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法。
2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的。
3)接口中不能包含有静态方法,而抽象类可以有静态代码块和静态方法。
4)一个类只能继承一个抽象类,而一个类可以继承多个接口。
设计层面上的区别
抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。
抽象类作为很多子类的父类,他是一种模板式设计。