Java抽象类与接口

来源:互联网 发布:windows 7 编辑:程序博客网 时间:2024/05/22 07:02

抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
个人理解:类是对现实世界对象的抽象,抽象类是对类的抽象。抽象就是抓住主要矛盾忽略次要矛盾,抓住本质的东西的一种思维习惯

例如:狗是对所有不同狗的抽象,每一只具体的狗是一个对象,狗这个概念就是抽象出来的“类”。除了狗这个类还有猫,鼠,鸭等类,把这些类再抽象一下就是动物类,这个动物类就是抽象类。

特点:
不可以被实例化,因为属于对类的抽象,不能确定具体的动物是什么?
只能被单一继承(Java,C#)
可以包含抽象方法
抽象类中的抽象方法必须被子类所实现除非子类中这个方法还是抽象的,这样的话就让子类的子类来实现。

接口

接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为。
个人理解:类是对象的抽象,接口是方法的抽象。

特点:
接口中的方法都是抽象方法
实现这个接口的类必须实现接口中的所有方法
接口不可以被实例化,因为是方法的抽象不可能被实例化
接口可以被多重继承即一个类可以实现多个接口

如何使用

isa的情况用抽象类:当符合······是·······的时候用抽象类,例如所有的黑狗都是狗,当是同一种东西的时候用
hasa的情况用接口:当符合······有·······的时候用接口,例如狗都会叫,叫可以被抽象成一个叫的接口,不同的动物都可以实现这个接口。让一个动物去继承“叫”这个接口从常识上也说不通吧。

原创粉丝点击