Java的继承和实现、接口和抽象类,它们的区别?

之前我写过Java的继承和多态的用处,这次讲讲继承和实现,接口和抽象类的区别,这其实是个很基础的Java知识,但是真的非常重要。特别是在阅读源码的时候,源码里面用了大量的继承和实现,接口以及抽象类,只有弄明白它们的用法,才能在阅读源码的时候体会到“妙啊”的感觉。

简单来说说吧。

1.接口 interface

接口中的字段

接口中的变量使用 public static final 修饰(可以省略),并且需要给出初始值。如果不初始化也会报错。比如:

哪怕你初始化一个null也不报错:

接口中的方法

接口interface里面的方法都是抽象方法,不能有方法体,比如:

只能写成:

并且方法隐式的使用 public abstract 修饰(可以省略,并且只能是 public ,如果是 private,procted,那么就编译报错)。

注意:接口里面abstract可以省略,如果是抽象类里面用抽象方法,abstract是不能省略的。意思是说抽象类里面想定义一个抽象方法(不写方法体)必须带abstract。

2.抽象类 abstract class

相比于接口,抽象类中还可以包含非抽象方法,和字段。抽象方法只能写在抽象类里面,不能写在普通类里面。

所以除接口外,如果你想写一个抽象方法,那就需要定义当前类是抽象类。

3.继承extends和实现implements

继承的好处是代码复用。继承的子类自动拥有父类中的所有属性和方法。所以继承已存在的类就是复用这些类的方法和域。在此基础上,子类还可以添加一些新的方法和域,以满足新的需求。

关于继承的用处,也参考我之前的文章:Java的继承和多态,真的明白它的实际用处吗?

这次我们讲讲继承和实现在语法上有什么区别

1.extends前后保持一致(接口继承接口,类继承类,除了循环继承),否则报错。

注意:如果是类继承类,只能继承一个,此为单继承;如果是接口继承接口,可以继承多个。

2.implements只能是类实现接口。“类实现接口”,就是说implements前面只能是类,implements后面只能跟接口。

如果implements前面是接口,会报下面这个错:

如果implements后面是类(下面的例子OtherPerson是个类,不是接口),会报这个错:

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值