I have two question on this code
public class Override {
private void f() {
System.out.println("private f()");
}
public static void main(String[] args) {
Override po = new Derived();
po.f();
}
}
class Derived extends Override {
public void f() {
System.out.println("public f()");
}
}
/*
* Output: private f()
*/// :~
1) How is function f is visible on the reference of Override po;
2) Why is output "private f()"
The main
method is inside class Override
, so ofcourse it can see the private members of class Override
.
You are not overriding method f
in class Derived
, there is no polymorphism. The type of the variable po
is Override
, so it will take method f
from class Override
.
Note that method f
in class Override
is not visible at all in class Derived
. The method f
in class Derived
is a different method, that doesn't have anything to do with the method f
in the superclass.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With