Java抽象类和接口的学习

抽象类

1.抽象类的定义
在继承的层次结构中,每个新类的子类都使类变得更加明确和具体。如果从一个子类向父类追溯,类就会变得更通用、更加不明确。类的设计应该确保父类包含它的子类的共同特点。有时候,一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的类称为抽象类。
2.抽象类的创建
在类的头部使用abstract修饰符表示该类为抽象类,不能使用new操作符创建该类的实例,在该类中定义的无法在该类中实现的方法被称为抽象方法,它的实现由子类提供。
抽象类的构造方法定义为protected,因为它只被子类使用。所以在创建一个具体的子类实例时,其父类的构造方法被调用以初始化父类中定义的数据域。

下图中便是使用abstract表示GeometricObject类为抽象类,并在其构造方法前添加protected
在这里插入图片描述

接口

接口的定义
接口在许多方面都与抽象类很相似,但是它的目的是指明相关或者不相关类的对象的共同行为。例如,使用适当的接口,可以指明这些对象是可比较的、可食用的或者可克隆的。
java使用interface来定义接口
在 java中,接口被看作是一种特殊的类。就像常规类一样,每个接口都被编译为独立的字节码文件。使用接口或多或少有点像使用抽象类。例如,可以使用接口作为引用变量的数据类型或类型转换的结果等。与抽象类相似,不能使用new 操作符创建接口的实例。

例如,可以使用 Edible 接口来指定一个对象是否是可食用的。这需要使用implements关键字让对象所属的类实现这个接口。类和接口之间的关系称为接口继承(interface inheritance)。因为接口继承和类继承本质上是相同的,所以我们将它们都简称为继承。

接口与抽象类

接口的与抽象类的比较
接口的使用与抽象类的使用基本类似,但是定义一个接口与定义一个抽象类有所不同
在这里插入图片描述
可利用关键字extends使接口继承其他接口,java只允许为类的继承做单一继承,但是允许使用接口做多重继承
所有的类共享一个根类Object,但是接口没有共同的根。
同时,接口只有定义,没有方法的实现。
但是接口与抽象类也同样有相同点:
接口与抽象类都不能被实例化,接口的实现类与抽象类的子类都只有在实现了它们中定义的方法后才能被实例化。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值