Java 为什么Obejct类中有公共方法,它们本可以得到保护?

Java 为什么Obejct类中有公共方法,它们本可以得到保护?,java,Java,为什么像equals、hashcode等对象类中的方法是公共的。如果这些都能得到保护,就足以满足要求。请解释一下。错了 不能从基类调用受保护的方法,除非对至少属于您的类型的限定符进行调用 如果toString受到保护,类A{}中的代码将只能在A的实例上调用toString。您应该了解修饰符之间的差异。哪些要求?哈希集需要这两个方法存在才能正常工作。虽然它们是公开的,但它们应该在一个单独的界面中,这可能是有争议的。我仍然不能正确地理解它。你能举例说明吗。当我运行下面的程序时,它运行良好。类超类{p

为什么像equals、hashcode等对象类中的方法是公共的。如果这些都能得到保护,就足以满足要求。请解释一下。

错了

不能从基类调用受保护的方法,除非对至少属于您的类型的限定符进行调用


如果toString受到保护,类A{}中的代码将只能在A的实例上调用toString。

您应该了解修饰符之间的差异。哪些要求?哈希集需要这两个方法存在才能正常工作。虽然它们是公开的,但它们应该在一个单独的界面中,这可能是有争议的。我仍然不能正确地理解它。你能举例说明吗。当我运行下面的程序时,它运行良好。类超类{protected void MyMethod{System.out.printlnide超类方法;}超类obj1=新超类;}输出:内部超类方法内部超类方法公共类MyClass扩展超类{公共静态void mainString s[]{超类obj1=新超类;obj1.MyMethod;超类obj2=新MyClass;obj2.MyMethod;}@SandyDrake您不能从另一个类调用受保护的方法。这意味着您不能在String append或println中使用toString,不能在HashMap中使用hashCode,也不能在列表中使用equals。@SandyDrake:这是因为受保护的方法在包中也可见。将MyClass移动到其他包中,这将停止编译。现在明白你的意思了。谢谢大家在这里让我讲清楚!