main calls class C method2
this prints method2 and calls super.method1();
then im unsure if because method 1 is private it calls method 2 instead? beacuse my output is method 2,
okay so then i call A method1 from A method2 - all fine
after printing the text i create a new B object to call class B method1, but instead it calls A method2 and repeats in a infinite loop, but why?
my output:
C class, method2
A class, method2
A class, method1
A class, method2
A class, method1
A class, method2
A class, method1
A class, method2
A class, method1
package com.codegym.task.task20.task2023;
/*
Making the right conclusion
*/
public class Solution {
public static void main(String[] s) {
A a = new C();
a.method2();
}
public static class A {
private void method1() {
System.out.println("A class, method1");
B b = new B();
b.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();
}
}
}