It seems very silly, but I am really confused. Please see below code:
package com.one;
public class SuperClass {
protected void fun() {
System.out.println("base fun");
}
}
----
package com.two;
import com.one.SuperClass;
public class SubClass extends SuperClass{
public void foo() {
SuperClass s = new SuperClass();
s.fun(); // Error Msg: Change visibility of fun() to public
}
}
I have read from oracle doc and here as well, that protected members are visible in the sub class in another package also. So fun() should be visible in SubClass in package two. Then why the error?
Am I terribly missing something very obvious?