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
Joined: Jan 11, 2002
Posts: 203
posted
0
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
Joined: Feb 06, 2002
Posts: 22
posted
0
Static methods are hidden. Instance methods are overriden
sun ram
Ranch Hand
Joined: Dec 18, 2001
Posts: 61
posted
0
We can shadow the static method, override the non-static method. -SR
SCSecA,SCNA,SCSA,SCWCD,SCJP
Gaurav Mantro
Ranch Hand
Joined: Sep 08, 2000
Posts: 61
posted
0
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.