File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes Why did I get this Outout?! Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login


JavaRanch » Java Forums » Java » Beginning Java
Reply Bookmark "Why did I get this Outout?!" Watch "Why did I get this Outout?!" New topic
Author

Why did I get this Outout?!

Abder-Rahman Ali
Ranch Hand

Joined: May 22, 2008
Posts: 138
In this code I was expecting " a d a" and the result is "a a a". Why is that?



Thanks.

This message was edited 2 times. Last update was at by Abder-Rahman Ali

Kalabaw moo
Ranch Hand

Joined: May 26, 2009
Posts: 61
Because the superclass's method "doStuff()" is not overriden. If you wanted to override the superclass's method then you have to declare it abstract. Try to read more about inheritance.
Joanne Neal
Rancher

Joined: Aug 05, 2005
Posts: 2499
Kalabaw moo wrote:Because the superclass's method "doStuff()" is not overriden. If you wanted to override the superclass's method then you have to declare it abstract. Try to read more about inheritance.


Non-abstract methods can be overridden too. The reason doStuff is not overridden is that it is static. Static methods cannot be overridden.

Having said that though, that is not the reason for the output. Static method calls are resolved at compile time and even though you are calling the method on an instance of the class, the compiler ignores this and just uses the class type to decide what method to call. Because this is done at compile time and 'a' is an Animal array, your code is actually just the equivalent of

This message was edited 1 time. Last update was at by Joanne Neal



Joanne
Kalabaw moo
Ranch Hand

Joined: May 26, 2009
Posts: 61
I see.. thanks
 
 
subject: Why did I get this Outout?!
 
developer file tools