cannot reduce the visibility of the inherited method from xxx原因及解决方法
2021/9/7 23:37:47
本文主要是介绍cannot reduce the visibility of the inherited method from xxx原因及解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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类无关。
正确使用情况如下
这篇关于cannot reduce the visibility of the inherited method from xxx原因及解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用