Win a copy of Python Continuous Integration and Delivery this week in the Python forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Bear Bibeault
  • Paul Clapham
  • Jeanne Boyarsky
Sheriffs:
  • Devaka Cooray
  • Junilu Lacar
  • Tim Cooke
Saloon Keepers:
  • Tim Moores
  • Ron McLeod
  • Tim Holloway
  • Claude Moore
  • Stephan van Hulst
Bartenders:
  • Winston Gutkowski
  • Carey Brown
  • Frits Walraven

Static methods question  RSS feed

 
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 ]
 
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
 
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 ]
 
Consider Paul's rocket mass heater.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!