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

2022-09-03 16:23:38

我是Java的新手,我正在学习基础知识。我正在研究这种方法以及如何在我自己的课堂上覆盖它。我只是想知道为什么必须?是因为在课堂上是这样定义的吗?toStringtoStringpublicObject


答案 1

来自 Oracle 官方文档

修饰 符

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

这是因为继承在两个类之间创建了 IS-A 关系,对于该关系,Liskov 替换原则必须有效。如果没有以前无法强制执行的约束。


答案 2

想想看:你用MyGizmo子类Gizmo。这意味着任何可以使用Gizmo的地方,您都可以在其位置使用MyGizmo。如果某些程序确实如此,那么即使gizmoObject不是Gizmo而是MyGizmo,那也应该有效。gizmoObject.toString()

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


推荐