我正在学习 Java 并试图了解private,protected和public修饰符如何影响绑定。
我写了这段代码:
public class A {
public void a() {
System.out.println("a in A.");
b();
}
private void b() {
System.out.println("b in A.");
}
public static void main(String[] args) {
B obj = new B();
obj.a();
}
}
class B extends A {
public void b() {
System.out.println("b in B.");
}
}
输出是:
a in A.
b in A.
尽管如此,B它还是有自己的b方法,并且obj是B的实例。为什么输出不是以下?
a in A.
b in B.
但是,如果我将b方法更改A为以下内容:
public void b() {
System.out.println("b in A.");
}
输出更改为预期:
a in A.
b in B.
那么,为什么在使用关键字 inb声明时它的行为不像虚函数?privateA