Win a copy of Think Java: How to Think Like a Computer Scientist this week in the Java in General forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Java Rule Round-up Error?

 
Yongtao You
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
(#56) Can a method with no access modifier be overriden by a method marked protected?

Answer: Yes
Overriden methods are allowed to have LESS restriction, and since protected is less restricted than default (package), this is allowed.

--------

This is an error, right? Here is another one:

--------

(#141) an overriding method can change the access modifier from default to protected.

Answer: true

---------

Error?
[ October 18, 2004: Message edited by: Yongtao You ]
 
Jim Yingst
Wanderer
Sheriff
Posts: 18671
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Both answers are correct. Try writing some code to see. What happens if you create a method with no modifier (default access), and try to override it with protected access? Does it work, or not?
 
Georg Nieuwoudt
Greenhorn
Posts: 13
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This might clear up your sceptisism :
PRIVATE -> DEFAULT -> PROTECTED -> PUBLIC

a private method may be overridden by a default, protected or public method
a default method may be overridden by a protected or public method
a protected method may be overridden by a public method
and public may be overridden by a public method

reversing the process wont work other wise you will get an error msg "method cannot be more private"(something like that anyways) at compile time
 
Mike Gershman
Ranch Hand
Posts: 1272
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
a private method may be overridden by a default, protected or public method

How do you override a private method?
 
Rajith Vidanaarachchi
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello,
You can give a less restricted access modifier when overriding.You can prove this by writing some code.So both are correct.
I hope you'll understand.
[ December 20, 2004: Message edited by: Rajith Vidanaarachchi ]
 
Win jones
Ranch Hand
Posts: 38
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ranjit, Mike is right - you cannot override a private method even thought it may appear that you are overriding it - in reality a private method is restricted to the class in which it is defined as it cannot be inherited - well now another q can you override a static method
 
Steven Bell
Ranch Hand
Posts: 1071
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I just tried and you can override a static method. However the 'correct' way to call a static method would be

MyClass.staticMethod();

rather than

MyClass myClass = new SubClass();
myClass.staticMethod();

so if it is ever a problem you should probably be slapped.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic