| Author |
Upcasting doesn't work as intended; clarification needed
|
Sandra Bachan
Ranch Hand
Joined: Feb 18, 2010
Posts: 434
|
|
Hello,
I have taken code from Sierra/Bates, end of chapter 2, and am playing around with it:
Output is:
furry bray
stripes bray
How do I make output such as:
furry generic noise
stripes bray
Thanks!
|
Marriage Made in Heaven
http://www.youtube.com/user/RohitWaliaWedsSonia
|
 |
Frits Walraven
Rancher
Joined: Apr 07, 2010
Posts: 1042
|
|
Hi Sandra,
You can't.
Two important rules apply here:
A reference variables type determines the methods that can be invoked on the object the variable is referencingWhat method is called is decided at runtime based on the object type.
In your case the the method makeNoise() is allowed because the class of the reference variable Mammal has a method called makeNoise(). The actual method to be called is the method on the Zebra (because it overrides the one in Mammal)
Regards,
Frits
|
 |
Sandra Bachan
Ranch Hand
Joined: Feb 18, 2010
Posts: 434
|
|
Totally forgot about the overriding part; now I understand
|
 |
Sandra Bachan
Ranch Hand
Joined: Feb 18, 2010
Posts: 434
|
|
By the way, I noticed when I comment out makeNoise() in Zebra, it invokes makeNoise() in Mammal:
Output:
furry generic noise
|
 |
Frits Walraven
Rancher
Joined: Apr 07, 2010
Posts: 1042
|
|
correct, now it just inherits the method from its super class.
Regards,
Frits
|
 |
Tahir Akram
Ranch Hand
Joined: Jul 03, 2007
Posts: 37
|
|
Sandra Bachan wrote:Hello,
I have taken code from Sierra/Bates, end of chapter 2, and am playing around with it:
Output is:
furry bray
stripes bray
How do I make output such as:
furry generic noise
stripes bray
Thanks!
Output
furry bray
furry bray
furry bray
|
Tahir Akram
|
 |
 |
|
|
subject: Upcasting doesn't work as intended; clarification needed
|
|
|