Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #27262

question about casting and inheritance

Newsgroups comp.lang.java.programmer
Date 2014-01-09 10:48 -0800
Message-ID <5dfabbeb-9201-488d-b56b-e1cef3913c92@googlegroups.com> (permalink)
Subject question about casting and inheritance
From marc.at.compass@gmail.com

Show all headers | View raw


Hello,
I'm preparing for Java 7 OCA exam. I have a q about casting..
I learned you can cast a variable of a class to another object only if there's a hierarchical relation between the variable's class _and_ the object's class you cast to. And also, the varibla should point to an object og the class you're casting to or you get a ClassCastException during runtime.
So I made up this example:

class A {
	String uniqueMethodForA(){
		return ("uniqueMethodForA");
	}
}

class B extends A { 
	String uniqueMethodForB(){
		return ("uniqueMethodForB");
	}
}

public class LearnJava{
    public static void main(String[] args) throws Exception {
		LearnJava LJ = new LearnJava();
		A a = new A();
		B b = new B();
		System.out.println(a.uniqueMethodForA());
		System.out.println(b.uniqueMethodForB());
		a=b;
		b=(B)a;
		System.out.println("=============");
		System.out.println(a.uniqueMethodForA());
		System.out.println(b.uniqueMethodForB());
   }
}
outputs:
uniqueMethodForA
uniqueMethodForB
=============
uniqueMethodForA
uniqueMethodForB

As you see variable a points to an instance of A and not to (an instance of) B. I effectively say "treat a as if it is b". I can even call a method on b that is unique for B. But a didn't point to an instance of B in the first place at all!
Why is it the line b=(B)a; doesn't give me a ClassCastException during runtime?

Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

question about casting and inheritance marc.at.compass@gmail.com - 2014-01-09 10:48 -0800
  Re: question about casting and inheritance leif.roar@invalid.com (Leif Roar Moldskred) - 2014-01-09 13:03 -0600
  Re: question about casting and inheritance Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-01-09 14:07 -0500
  Re: question about casting and inheritance markspace <markspace@nospam.nospam> - 2014-01-09 13:00 -0800
  Re: question about casting and inheritance Ricardo Palomaes <rpmdisguise-java@nowhere.com> - 2014-01-09 23:24 +0100
    Re: question about casting and inheritance Ricardo Palomares <rpmdisguise-java@nowhere.com> - 2014-01-12 12:20 +0100
  Re: question about casting and inheritance Patricia Shanahan <pats@acm.org> - 2014-01-10 03:04 -0800
    Re: question about casting and inheritance Arved Sandstrom <asandstrom2@eastlink.ca> - 2014-01-11 09:38 -0400
  Re: question about casting and inheritance Roedy Green <see_website@mindprod.com.invalid> - 2014-01-10 16:36 -0800
  Re: question about casting and inheritance marc.at.compass@gmail.com - 2014-01-11 08:01 -0800

csiph-web