Java抽象类和接口的区别

本文详细阐述了Java中抽象类和接口的区别,包括它们的特性、设计理念以及如何选择使用。抽象类体现了“isa”关系,适合定义共性功能;接口则体现“likea”关系,用于定义扩展功能并支持多继承。JDK1.8引入default方法是为了在不破坏现有继承体系的情况下改进接口。在设计时,仅需抽象方法时使用接口,否则选择抽象类。
摘要由CSDN通过智能技术生成

抽象类和接口的区别

1.抽象类
在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。使用abstract class定义抽象类。
抽象类是特点:
①抽象类不能实例化,因为它不是具体的。抽象类的实例化是靠其子类实现的,是实现多态的一种方式。
②抽象类有构造方法,但是不能被实例化,构造方法的作用在于能够让子类访问父类的数据。
③抽象的子类
如果一个类继承一个抽象类而没有重写抽象父类的所有抽象方法,则这个子类是抽象的子类;如果子类重写了父类所有抽象方法,则子类是一个具体类。
④成员特点
- 成员变量:可以是变量,也可以是常量
- 成员方法:可以抽象,也可以非抽象
⑤继承和实现
- 抽象类只能单继承类,既可以继承抽象类也可继承非抽象类
- 抽象类可以实现多个接口
⑥设计理念
被继承体现的是 ”is a”的关系,抽象类中定义的是该继承体系的共性功能。

2.接口
接口就是某个事物对外提供的一些功能的声明,可以利用接口实现多态,同时弥补Java单一继承的缺点。
定义接口的关键字是interface
接口的特点:
①接口不能被实例化,只能通过实现类实例化,通过把接口的引用指向实现类的对象。
②接口没有构造方法。
③实现接口的类要重写接口中定义的所有方法(default方法除外),如果只重写接口中部分方法,则这个类是抽象类。
④成员特点
- 成员变量:只可以常量,默认是以public static final修饰
- 成员方法:只可以是抽象方法,但在JDK1.8之后提供default方法
⑤继承
接口可以继承多个接口,即接口可以实现多继承
⑥设计理念
被实现体现的是 ”like a”的关系,接口中定义的是该继承体系的扩展功能。

JDK1.8中为什么要引入default方法呢?
使用接口,使我们可以面向抽象编程,但是有一个缺点就是当接口有改动时,需要修改所有的实现类。JDK1.8中,为了给已经存在的接口增加新的方法并且不影响已有的实现,引入了default默认方法。默认方法允许在不打破现有的继承体系的基础上改进接口,解决了接口的修改与现有的实现不兼容的现象。

3.抽象类和接口怎么选择?
根据抽象类和接口的不同,当我们仅需要定义一些抽象方法而不需要额外的具体方法或者变量时,我们可以使用接口,否则的话就用抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值