• Post Reply Bookmark Topic Watch Topic
  • New Topic

Static methods question  RSS feed

 
Xinhua Gu
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
i wrote following code to see if this statement is true:
Static methods can not be overridden.


I think line 1 is an overriding method not a redefined method. To proof it, i changed line 1 to:
static synchronized void go(final int� a) throws Exception
Then compiler starts to complain...

Static methods can not be overridden,REALLY?
[ May 30, 2006: Message edited by: Xinhua Gu ]
 
vinod balaji
Ranch Hand
Posts: 84
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You cannot override a method marked static. K&B pgno 103
 
radhika holani
Greenhorn
Posts: 29
 
Xinhua Gu
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I got the answer:
http://faq.javaranch.com/view?OverridingVsHiding
Thank you very much!
 
Xinhua Gu
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
actually, i donot like the "hiding" explanation from FAQ.

In my preceding codes, defining static method in subclass follow all the rules for legal overrides at compiler level e.g. it can not contain more strict visibility or it can not throw an Exception arbitrarily. Thus, it is NOT a redefined method. (in K&B page 147 says it IS redefined)

It JUST does not work for run-time polymorphism.

So, the bottom line is how to understand "can not be overridden".
For final method, "can not be overridden" means a compile error
Here, for static method it means "does not work for run time polymorphism"

Am i right?

Thanks for all the help.
[ May 31, 2006: Message edited by: Xinhua Gu ]
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!