ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cannot reduce the visibility of the inherited method from xxx原因及解决方法

2021-09-07 23:30:45  阅读:144  来源: 互联网

标签:重写 xxx reduce visibility 访问 接口 权限 方法 public


cannot reduce the visibility of the inherited method from xxx
意思为:无法降低从xxx继承的方法的可见性
解决这个问题,我们先需要明白对于类和接口中的一个必须知道的知识点:
1、子类重写父类方法时,不能使用比父类中被重写的方法更低的访问权限,如父类中的方法是public时,子类的方法就不能是prvate,但是如果父类是默认的,那么你补上一个public就一定没问题。

2、因为接口定义的方法默认是public的,意思就是你没有任何访问修饰符的情况下,系统给接口的方法加上了一个public的访问修饰符,而public的访问权限非常高。

3、类的默认访问修饰符是freidnly,访问级别比public低,因此和上述2结合之后,如果要重写接口的抽象方法,就必须在重写的方法前补上一个public

错误原因:类继承接口,在重写接口方法时,没有用public定义

情况如下:
生物类:
在这里插入图片描述
动物类:
在这里插入图片描述
人类:在这里插入图片描述
最终实例:
在这里插入图片描述
可以发现没有加上public的think(方法出现了这个问题,而加上public的其他方法都没有出现这个问题,只需要补上一个public就能解决,这是由于默认接口Human他的抽象方法的访问权限都是public,那么我们的访问权限就不能低于public。
当然,这是由于我的接口继承的是Human,如果继承其他两个接口,那么可以不对父接口中不存在的方法进行权限减小,如下:
在这里插入图片描述
可以发现如果将父接口设置为动物类,由于动物类没有earn()和think()这两个方法,因此我在Person类中声明的这两个方法其实就是他自己的方法,与Human类无关。
正确使用情况如下
在这里插入图片描述

标签:重写,xxx,reduce,visibility,访问,接口,权限,方法,public
来源: https://blog.csdn.net/Zhangsama1/article/details/120169437

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有