これは、コードが正常に機能している間の継承のコードサンプルです。このコードの出力を理解できません。親切に説明してください。
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に対して2番目の呼び出しが行われるのはなぜですか。