1.抽象类
有如下的类结构,创建Dog对象和Cat对象是很合理的,但是Animal对象无法实例化,我们要有Animal这个类来继承和产生多态,但要限制只有它的子类才能被初始化。抽象类可以用来防止类被初始化。
- 类即使不含有抽象方法,也可以将类声明为抽象类
- 如果类中有方法是抽象方法,那么这个类必须被定义为抽象类
- 抽象类在使用过程中不能被实例化
- 抽象类中的抽象方法要么在子类中实现,要么在子类中继续被定义为抽象方法
- 抽象类的对象变量可以引用非抽象子类对象(抽象子类也无法实例化,所以也不可能指向抽象子类对象)
2.接口
多重继承:A继承了B和C,B和C中有一个同名称的方法void run(),现在A调用这个方法就无法判断到底运行B中还是C中run的方法。接口就是用来解决多重继承的问题。接口解决将全部的方法设为抽象的,这样就会在子类中实现此方法,因此就在执行期间就不会搞不清楚要用哪一个继承版本。
- 接口中的所有的方法都带有public和abstract的意义,只能被这两个关键字修饰
- 接口的成员变量默认是public static final,并且必须给其赋初值
- 接口的方法一定是抽象的,所以必须要以分号结束
- 接口强调特定功能的实现,其设计理念是"has - a"关系,继承强调所属关系,其设计理念是"is - a"
本文详细解释了抽象类和接口的概念及其应用场景。介绍了抽象类如何防止类被实例化并实现多态,以及接口如何解决多重继承的问题。同时,对比了抽象类与接口之间的主要区别。

1449

被折叠的 条评论
为什么被折叠?



