这是继承的代码示例,代码功能正常。我无法理解此代码的输出,请向我解释。
class R {
private void S1() {
System.out.println("R:S1");
}
protected void S2() {
System.out.println("R:S2");
}
protected void S1S2() {
S1();
S2();
}
}
class S extends R {
private void S1() {
System.out.println("S:S1");
}
protected void S2() {
System.out.println("S:S2");
}
}
public class Inheritance {
public static void main(String srgs[]) {
new S().S1S2();
}
}
输出是:
R:S1
S:S2
为什么第一次调用 R 类的 S1 而第二次调用 S 类的 S2。