Java中抽象类与接口

本文探讨了抽象类和接口在Java中的角色,强调它们作为继承和多态的工具。抽象类作为实体类和接口之间的桥梁,允许部分方法实现,而接口则强制全抽象方法实现。接口的引入提高了扩展性,尤其是JDK1.8后的默认方法。选择抽象类还是接口取决于设计需求的灵活性和特定场景的应用。
摘要由CSDN通过智能技术生成
个人理解:抽象类是在接口和实体类之间的一个桥梁。是在抽象和具体之间的一个过度。

先看共性:

  1. 都不能直接实例化,接口要被实现,抽象类要被继承。但是抽象类可以有构造器。
  2. 都含有抽象方法。
  3. 都可以继承接口,抽象类还可以继承其他类。抽象类也是类的一种,因此一个类只能继承一个抽象类,而可以实现多个接口。

不同:

  1. 接口中所有的变量都是static和final的,而抽象类可以有普通的变量。
  2. 关于接口中几乎所有方法都是抽象的(jdk1.8后还可以有默认方法)。而抽象类中可以含有具体实现的方法,也含有抽象方法,含有抽象方法的类就是抽象类。
  3. 接上一条,实现接口的实现类必须实现接口的所有抽象方法。抽象类子类可以实现父类一部分抽象方法,成为一个抽象的子类,也可以实现全部抽象方法,成为一个普通的类。
  4. 抽象类可以有普通的方法的实现,当其子类不重写普通方法时,就会默认执行父类的方法。
  5. 抽象类比接口速度快。

可以看出,抽象类是介于接口和普通类之间的一种类,它同时具有二者的一些特性。

在添加新方法时,抽象类具有更灵活的特点,如果新方法是普通方法,则抽象类的子类不需要做更改即可得到这些方法。

而接口则需要所有子类做出更改,因为接口的实现类必须重写接口中所有的抽象方法。在jdk1.8中增加的default方法就是为了提高接口的扩展性,接口中的默认方法不需要被实现类重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值