I need some information from you
Java boffins :
View the following code from Bruce Eckel's - Thinking in Java :
//: c06:FinalOverridingIllusion.java
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
//
www.BruceEckel.com. See copyright notice in CopyRight.txt.
import com.bruceeckel.simpletest.*;
class WithFinals {
// Identical to "private" alone:
private final void f() {
System.out.println("WithFinals.f()");
}
// Also automatically "final":
private void g() {
System.out.println("WithFinals.g()");
}
}
class OverridingPrivate extends WithFinals {
private final void f() {
System.out.println("OverridingPrivate.f()");
}
private void g() {
System.out.println("OverridingPrivate.g()");
}
}
class OverridingPrivate2 extends OverridingPrivate {
public final void f() {
System.out.println("OverridingPrivate2.f()");
}
public void g() {
System.out.println("OverridingPrivate2.g()");
}
}
public class FinalOverridingIllusion {
private static
Test monitor = new Test();
public static void main(
String[] args) {
OverridingPrivate2 op2 = new OverridingPrivate2();
op2.f();
op2.g();
// You can upcast:
OverridingPrivate op = op2; // !!!
// But you can't call the methods:
//! op.f();
//! op.g();
// Same here:
WithFinals wf = op2;
//! wf.f();
//! wf.g();
monitor.expect(new String[] {
"OverridingPrivate2.f()",
"OverridingPrivate2.g()"
});
}
} ///:~
Question : Refering to the line marked / !!! /
can anyone tel me nuts and bolts level how the virtual machine intreperts
this line : OverridingPrivate op = op2;
As i see it , op2 is a reference to an object of a certain type ie
xyz@abc and op and object reference (I think) of an object of another type
ie abc@qwe. Thus : I have different objects with the different references which are set equal ! Now I'm off the wagon . I always thought inheritance involved getting money from Gramps !
Can anyone please advise
Regards