我是Java的新手,我正在学习基础知识。我正在研究toString方法以及如何在我自己的类中覆盖它。我只是想知道为什么要让toString成为public?是因为它是在Object类中这样定义的吗?
发布于 2013-03-18 07:23:44
来自官方Oracle documentation
修饰符
与被重写的方法相比,重写方法的访问说明符可以允许更多但不是更少的访问。例如,超类中的受保护实例方法可以在子类中设置为公共,但不能设置为私有。
这是因为继承在两个类之间创建了一个IS-A关系,对于这个关系,Liskov substitution principle必须是有效的。而没有先前不可能强制执行的约束。
发布于 2013-03-18 07:27:10
想想看:你用MyGizmo将Gizmo子类化。这意味着任何可以使用Gizmo的地方,你都可以在它所在的地方使用MyGizmo。如果某个程序支持gizmoObject.toString(),那么即使gizmoObject不是Gizmo而是MyGizmo,它也应该可以工作。
特别是,toString用于打印和转储对象,并且需要在所有对象上都可访问。
发布于 2013-03-18 07:21:39
当重写任何方法时,重写的可见性必须至少与基方法一样可见。
https://stackoverflow.com/questions/15467496
复制相似问题