Meaningless Drivel is fun!
The moose likes Java in General and the fly likes Upcasting Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of OCA Java SE 8 Programmer I Study Guide this week in the OCAJP 8 forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Upcasting " Watch "Upcasting " New topic


Deon Botha

Joined: Oct 02, 2003
Posts: 2
I need some information from you Java boffins :
View the following code from Bruce Eckel's - Thinking in Java :
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// See copyright notice in CopyRight.txt.
import com.bruceeckel.simpletest.*;
class WithFinals {
// Identical to "private" alone:
private final void f() {
// Also automatically "final":
private void g() {
class OverridingPrivate extends WithFinals {
private final void f() {
private void g() {
class OverridingPrivate2 extends OverridingPrivate {
public final void f() {
public void g() {
public class FinalOverridingIllusion {
private static Test monitor = new Test();
public static void main(String[] args) {
OverridingPrivate2 op2 = new OverridingPrivate2();
// 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[] {
} ///:~
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
Rikko Verrijzer
Ranch Hand

Joined: Jul 22, 2003
Posts: 34
Please note that op2 is an object of type OverridingPrivate2. If you take a look at the class OverridingPrivate2 you will see that that class extends from OverridingPrivate. This means that OverridingPrivate2 has "isa" relationship with OverridingPrivate. just like when a rectangle extends from shape, a rectangle 'is a' shape.
The same applies here. because OverridingPrivate2 'is a' OverridingPrivate one can see OverridingPrivate2 as a OverridingPrivate! just like one can see a rectangle as a shape.
In java this results in the fact that you can 'upcast' objects of a subtype to a supertype.
Hope this helps?
[ October 02, 2003: Message edited by: Rikko Verrijzer ]
Deon Botha

Joined: Oct 02, 2003
Posts: 2
Hi Rikko
Thanks a lot !
I have lost track of the "is a " relation ship , its now a lot more clearer
Cindy Glass
"The Hood"

Joined: Sep 29, 2000
Posts: 8521
OK, had to look it up
World Wide Words:Boffin
His argument was that boffin is in common usage a jaded word that borders on the offensive; the word �conjures up images of weird old men in flapping lab coats, pouring strange chemicals into test tubes�

(Significant sections omitted to make the quote appear more radical )

"JavaRanch, where the deer and the Certified play" - David O'Meara
I agree. Here's the link:
subject: Upcasting
It's not a secret anymore!