File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
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
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
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
subject: Upcasting