为什么在重写toString方法时需要公共修饰符?

时间:2015-04-30 19:32:53

标签: java

如果我在同一个包中调用它,为什么我需要这个实例方法的public修饰符?

   public String toString() {
    if (isOn()) {
        return "Speed is " + speed + ", color     is " + color
          + " and radius is " + radius;
    }
    else
        return "Fan is off. " + "Color is " + color
          + " and radius is " + radius;

}

3 个答案:

答案 0 :(得分:3)

因为您实际上正在尝试覆盖 Object.toString()

由于该方法是公开的,因此您的辅助功能必须匹配。

答案 1 :(得分:2)

因为你从[class]对象覆盖它,并且它是公开的。您无法覆盖和更改访问修饰符 - 它不会覆盖。

答案 2 :(得分:2)

您尝试覆盖默认的toString()方法。这种方法是公开的,因此你的方法也必须是公开的。

您不允许更改父类的任何重写函数的可见性,因为所有子类都必须是父类的实例。

如果您突然将toString()更改为私有,则您的对象不再是有效的Object

您可能需要阅读此http://en.wikipedia.org/wiki/Liskov_substitution_principle