为什么不覆盖此方法?
Why isn't this method overridden?
为什么输出中的值是 2 和 10?
myMethod 方法没有被覆盖吗?
是的,如果我将测试 class 中方法的访问修饰符从私有更改为任何其他,输出将如我所料 - 2 和 20。但我认为 的方法子 class 应该至少与父 class 的方法一样可访问 - 这是覆盖方法的唯一条件(与访问修饰符相关)。
public class Test {
private int myMethod(int x){return x;}
public static void main(String[] args) {
Test aTest = new Test();
Test aChild = new Child();
System.out.println(aTest.myMethod(2));
System.out.println(aChild.myMethod(10));
}
}
class Child extends Test{
public int myMethod(int x){return 2*x;}
}
因为 Test
中的 myMethod
是私有的,Child
class 看不到它。
为什么输出中的值是 2 和 10? myMethod 方法没有被覆盖吗? 是的,如果我将测试 class 中方法的访问修饰符从私有更改为任何其他,输出将如我所料 - 2 和 20。但我认为 的方法子 class 应该至少与父 class 的方法一样可访问 - 这是覆盖方法的唯一条件(与访问修饰符相关)。
public class Test {
private int myMethod(int x){return x;}
public static void main(String[] args) {
Test aTest = new Test();
Test aChild = new Child();
System.out.println(aTest.myMethod(2));
System.out.println(aChild.myMethod(10));
}
}
class Child extends Test{
public int myMethod(int x){return 2*x;}
}
因为 Test
中的 myMethod
是私有的,Child
class 看不到它。