Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

overriding static methods

 
Ulrich Rueth
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm a bit confused. Though I learned during exam preparation that "static method may not be overridden" (Sybex Virtual Trainer answer), this code compiles:

class A {
static void foo() {}
}
class B extends A {
public static void foo() {}
}

Isn't this a contradiction to the statement above?
Thanks!
Ulrich
 
Shivaji Marathe
Ranch Hand
Posts: 203
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This question has been discussed here a zillion times. Please do a search on this forum and also look for a FAQ of this forum.
 
Murgan Sub
Greenhorn
Posts: 22
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Static methods are hidden.
Instance methods are overriden
 
sun ram
Ranch Hand
Posts: 61
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
We can shadow the static method,
override the non-static method.
-SR
 
Gaurav Mantro
Ranch Hand
Posts: 61
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Ulrich.
Please look at the following code.

When this code is executed the outcome is
StaticMethod of Test
NonStaticMethod of TestSub
Which indicates that StaticMethod was not over ridden that's why the StaticMethod of the typecast object type was invoked but since NonStaticMethod was overridden, although we typecast it to be of type Test it still invoked NonStaticMethod of TestSub, which is the original object and not the typecasted one.
Hope this helps.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic