Java中表示抽象的两种机制,一个是abstract class 抽象类,另一个就是更彻底的抽象 interface 接口 。
在编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的具体方式,那么这些方法都有具体的方法体。但是在某些情况下,父类只知道其子类应该包含怎样的方法,但是不知道子类如何精确的实现这些方法,这个时候就需要用到抽象类。
interface强调特定功能的实现,而abstract class强调所属关系。
两者比较!
abstract class (抽象类) | interface (接口) | |
实例化 | 不可以的 | 不可以的 |
类 | 一个类只能继承一个抽象类 | 一个类可以实现多个接口 |
数据成员 | 可以自定义 | static final的,而且一般也不在接口中定义 |
方法 | 可私有,不是abstract的方法,必须要实现 | 非私有(实现接口肯定要访问方法,私有就不能重写什么的啦),默认是public abstract类型的 |
实现 | 继承,extends | 实现,implements |
应用 |
|
|
PS : 可以使用instanceof 运算符开判断某对象的类是否实现了接口。