java中extends和implements有优先级吗?你是否了解它们同时存在时有什么影响?
在Java中,extends表示继承的意思,子类拥有父类非 private 的属性、方法。implements表示接口的实现,当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
当出现下面的情况,extends和implements的优先级哪个高?是BoyPeople继承了(GirlPeople implements People)还是(BoyPeople继承GrilPeople)后implements People?
public class BoyPeople extends GirlPeople implements People
对这个问题,我们通过一个例子来说明:
背景介绍,先介绍已有的类、接口、抽象类:
首先定义一个接口:
![e1b08ddefc76fbdc6e96071711bfc2ea.png](https://i-blog.csdnimg.cn/blog_migrate/54948fdcadcea063fec35e67cfabd58e.jpeg)
接口定义
然后定义一个抽象类实现接口,由于GirlPeople是抽象类,所以可以不用实现所有的接口方法:
![3880bda67e0d8e6239a50383b00c56bc.png](https://i-blog.csdnimg.cn/blog_migrate/96f356af86cb3380bb6d916c96611cc2.jpeg)
定义抽象类实现接口
定义一个男孩实体类,继承抽象类,并实现接口:
![e29499c5bed3cc0c81ec7a54079cb973.png](https://i-blog.csdnimg.cn/blog_migrate/e1951ad12ad67a4ccfd52dfddb1ff86b.jpeg)
实体类
定义一个女汉子的实体类,继承抽象类,并实现接口:
![ae86883e30ce63266075a805db1ccf19.png](https://i-blog.csdnimg.cn/blog_migrate/5163fc25b08e55d8a850b1d93cf64ef7.jpeg)
女汉子实体类
问题描述:
BoyPeople与TomBoy一样,都是继承了GirlPeople,并实现People。
这个时候,如果在People中增加一个方法。那么其他类该如何修改才能正确编译和运行?
原理分析:
1、People接口定义了三个方法
2、GirlPeople是抽象方法,实现了接口。因为它是抽象的,所以可实现接口中的部分方法。
3、TomBoy继承了GirlPeople并实现接口People。 People中的三个方法,TomBoy可以通过继承的方式从GirlPeople实现,也可以自己实现,但必须全部实现。
实验结果:
BoyPeople与TomBoy一样,都是继承了GirlPeople,并实现People。
这个时候,如果在People中增加一个方法。则,需要修改GirlPeople增加这个方法的实现。或者分别在BoyPeople和Tomboy中都实现新增的方法