Ребят, помогите понять как так получается что если не поставить у метода1 класса А модификатор private, то вывод становиться не корректным.
У нас метод2 класса С сначала печатает, потом вызывает метод1 класса В, который сначала вызывает метод2 класса А, а потом печатает свое, а затем метод2 класса А вызывает просто метод1, до этого момента у нас вывод вот такой:
C class, method2
A class, method2
и тут если модификатор стоит не private(на методе1 клааса А) то метод2 класса А вызовет метод1 класса С, а не класса А (почему то), и вывод дальше будет :
C class, method1
B class, method1 (так как программа вернулась к выполнению все того же вызванного метода1 класса В, тут понятно).
А если поставить модификатор private то метод1 класса А вызовет метод этого же класса и вывод будет:
A class, method1
B class, method1
В общем пожалуйста помогите понять принцип влияние этого модификатора на последовательность выполнения
package com.javarush.task.task20.task2023;
/*
Делаем правильный вывод
*/
public class Solution {
public static void main(String[] s) {
A a = new C();
a.method2();
}
public static class A {
public void method1() {
System.out.println("A class, method1");
}
public void method2() {
System.out.println("A class, method2");
method1();
}
}
public static class B extends A {
public void method1() {
super.method2();
System.out.println("B class, method1");
}
public void method2() {
System.out.println("B class, method2");
}
}
public static class C extends B {
public void method1() {
System.out.println("C class, method1");
}
public void method2() {
System.out.println("C class, method2");
super.method1();
}
}
}
мужикробот, потому что я сейчас в процессе решения другой, сложной для меня задачи, и весь вчерашний вечер как раз таки провел читая твои комментарии к этой задаче, и с пониманием этой ты тоже помог✔️