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


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

Re: question about casting and inheritance

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From Eric Sosman <esosman@comcast-dot-net.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: question about casting and inheritance
Date Thu, 09 Jan 2014 14:07:01 -0500
Organization A noiseless patient Spider
Lines 56
Message-ID <lams0q$rk9$1@dont-email.me> (permalink)
References <5dfabbeb-9201-488d-b56b-e1cef3913c92@googlegroups.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Injection-Date Thu, 9 Jan 2014 19:07:06 +0000 (UTC)
Injection-Info mx05.eternal-september.org; posting-host="858a9d65d95f4ea4d355bd116aa2cdbf"; logging-data="28297"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19W4UOwcf+qUkUxUY/WY6He"
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0
In-Reply-To <5dfabbeb-9201-488d-b56b-e1cef3913c92@googlegroups.com>
Cancel-Lock sha1:nhaiP/Y09OQwAca4Hu8Y2BRk3TA=
Xref csiph.com comp.lang.java.programmer:27264

Show key headers only | View raw


On 1/9/2014 1:48 PM, marc.at.compass@gmail.com wrote:
> 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?

     Because "a" refers to the object originally pointed to by "b",
that is, to the object created by "new B()".  That object is a B
object, so converting its A-type reference "a" to a B-type reference
is no problem.   For contrast, try

	A a = new A();
	B b = new B();
	...
	A a2 = b;
	B b2 = (B) a;  // ClassCastException here

-- 
Eric Sosman
esosman@comcast-dot-net.invalid

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | 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