一 抽象类
包含抽象方法的的类叫做“抽象类”,例如 抽象方法 abstract void f(); 如果有类包含有一个或者一个以上的抽象方法,则为抽象类。
抽象类的目的,用抽象方法,表示一个通用接口。如果抽象类不完整,也就是说继承它的类没有完全实现抽象方法时,我们是不能产生该类的对象的。它还是抽象类。
抽象类可以有成员变量。
二 接口 interface
interface关键字比abstract更进一步。(可以把它看为纯粹的抽象类)。
接口当中的成员方法为public ,成员变量隐式为static ,final的。接口只是提供了形式,而并没有提供任何具体的实现。
接口的多重继承。
因为接口是根本没有任何形式的具体实现的,所以也就无法阻止多个接口的组合。这一点是非常重要的,因为在C++当中,每个类基本都有具体的实现,在多重继承时,就有冲突的问题,我们到底选择哪个基类当中的方法?
在java的导出类当中,不强制要求必须有一个是抽象的或者具体的基类。当然可以从多个接口当中继承,从而间接的实现多重继承,也可以从一个非接口的类继承,但是其余的父类必须为接口。因为继承类从多个接口继承,所以可以向上转型为 任何一个父接口的类型。
使用接口的原因:一,可以向上转型为多个基类型。二,防止客户端程序员创建该类的对象,并确保这仅仅是建立一个接口