抽象类和接口(Abstract Class And Interface)
Java中最基本的概念就是”类“也就是Class,由于类的存在,使得Java有了面向对象的基础。
在此基础上,抽象类(abstract class)和接口(Interface)更是对Java的面向对象编程进行了扩展、升级。
所以,如果能从面向对象的角度,理解抽象类和接口存在的意义,也就能轻松地解释它们之间的这些联系和区别;
抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。
***不完整需子类细化:抽象类有些只声明了方法,为的是让子类实现具体的操作***
***行为规范:相比抽象类接口就彻底不完整了,因为它里面都只是声明方法,没具体说这个方法要干嘛。因为它只是规范子类必须去实现的方法,告诉子类:"你能做..."***
抽象类 是从一系列相关对象中抽象出来的概念, 反映的是事物的内部共性
接口 是为了满足外部调用而定义的一个功能约定, 反映的是事物的外部特性
首先,说说它两的相同点:
1.都不能被实例化
2.都可以通过继承(或实现)的子类,实现其未实现的抽象方法
然后,是它们的不同点:
1.关于声明的方式
写法不同, 抽象类(abstract class)和接口(Interface)
2.关于它们内部的方法(函数)
抽象类 中的方法可以不是抽象方法——可以实现方法
***实现方法:也就是函数中可以写具体的逻辑代码; 由于子类具有相关性,这里定义的就是它们公共的方法***
接口中的方法必须是抽象方法——不能去实现方法
***不能去实现方法:也就是函数体必须为空,只写一个函数名放那; 由于实现接口的这些类未必有联系,所以这里不应该去实现具体的方法***
3.关于被继承/实现的次数
抽象类单一继承,接口多重实现
***一个类只能继承一个抽象方法,却可以实现实现多个接口;接口可以用于扩展对象的外部特性***