首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的toString()重写方法必须是公共的?

为什么我的toString()重写方法必须是公共的?
EN

Stack Overflow用户
提问于 2013-03-18 07:19:38
回答 7查看 3.5K关注 0票数 14

我是Java的新手,我正在学习基础知识。我正在研究toString方法以及如何在我自己的类中覆盖它。我只是想知道为什么要让toString成为public?是因为它是在Object类中这样定义的吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-03-18 07:23:44

来自官方Oracle documentation

修饰符

与被重写的方法相比,重写方法的访问说明符可以允许更多但不是更少的访问。例如,超类中的受保护实例方法可以在子类中设置为公共,但不能设置为私有。

这是因为继承在两个类之间创建了一个IS-A关系,对于这个关系,Liskov substitution principle必须是有效的。而没有先前不可能强制执行的约束。

票数 28
EN

Stack Overflow用户

发布于 2013-03-18 07:27:10

想想看:你用MyGizmo将Gizmo子类化。这意味着任何可以使用Gizmo的地方,你都可以在它所在的地方使用MyGizmo。如果某个程序支持gizmoObject.toString(),那么即使gizmoObject不是Gizmo而是MyGizmo,它也应该可以工作。

特别是,toString用于打印和转储对象,并且需要在所有对象上都可访问。

票数 22
EN

Stack Overflow用户

发布于 2013-03-18 07:21:39

当重写任何方法时,重写的可见性必须至少与基方法一样可见。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15467496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档