Please consider the following classes:
public interface BaseInterface {
    void method1();
    void method2();
    void method3();
}
public class BaseClass implements BaseInterface {
    @Override
    public void method1() {
        System.out.println("BaseClass.method1 IN");
        this.method3();
        System.out.println("BaseClass.method1 OUT");
    }
    @Override
    public void method2() {
        System.out.println("BaseClass.method2 IN");
        System.out.println("BaseClass.method2 OUT");
    }
    @Override
    public void method3() {
        System.out.println("BaseClass.method3 IN");
        System.out.println("BaseClass.method3 OUT");
    }
}
public class ChildClass extends BaseClass {
    @Override
    public void method1() {
        System.out.println("ChildClass.method1 IN");
        super.method1();
        System.out.println("ChildClass.method1 OUT");
    }
    @Override
    public void method2() {
        System.out.println("ChildClass.method2 IN");
        super.method2();
        System.out.println("ChildClass.method2 OUT");
    }
    @Override
    public void method3() {
        System.out.println("ChildClass.method3 IN");
        System.out.println("ChildClass.method3()");
        System.out.println("ChildClass.method3 OUT");
    }
}
In this case, if I create an instance of ChildClass:
BaseInterface cc1 = new ChildClass();
and then run method1 of this class
cc1.method1();
it will return the following output:
ChildClass.method1 IN
BaseClass.method1 IN
ChildClass.method3 IN
ChildClass.method3()
ChildClass.method3 OUT
BaseClass.method1 OUT
ChildClass.method1 OUT
So when I call this.method3() (or just method3()) from the super class (BaseClass), the method3 of the ChildClass is executed instead. I know this is the expected behavior but I just wonder how can I still call the BaseClass.method3 in this setup? Is this possible?
Please note that this is a purely theoretical question and I understand that in reality I probably should've instantiated a BaseClass instance in the first place. Is this the only way to get around that?
 
     
    