我正在学习 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
声明时它的行为不像虚函数?private
A