In overriding, in super class we declared a method as protected & in sub class we declared that method as private. what happens?

Questions by sadashivarao   answers by sadashivarao

Showing Answers 1 - 10 of 10 Answers


  • May 15th, 2006

Error occured

  Was this answer useful?  Yes

crazy frog

  • May 15th, 2006

it wont compile, because access modifier of overridden methods should be less restrictive but not more restrictive,, u may declare as public ,,


more restrictive to less restrictive

private > default > protected > public




  Was this answer useful?  Yes


  • May 17th, 2006

Both ans mentioned here are wrong....

Actully the code will compile because a less restrictive access specified method(as in Ques Protected) can be overridden by more restrivtive  access specified method(private).



  Was this answer useful?  Yes

abdul khalik

  • May 22nd, 2006

in ovveriding in subclass the access specifier should be less restrictive. if protected is used in super class then in sub class u can use public and protected both but not private. if u try to use private it will not be compiled.



  • May 23rd, 2006

Hi, Im sorry to say that Nishi is wrong and what crazy frog has commented is correct
You cannot reduce the visibility of the inherited method from superclass's method.
This is the order
(low visibility) ----------------------> (high visibility)
   private -> default -> protected -> public
class A {
  private void method1() {
  // do something
class B extends A {
   void method1() {
   // do something
Here you are trying to reduce the visibility from private to default
which is not possible but the reverse works fine.
Thanks and Regards

  Was this answer useful?  Yes


  • Jul 31st, 2006

yes shiva its right what u said. bcoz when u override a method with a more restrictive access modifier it simply throws an error.

if u want any reference just go to sun certified book and have a look at 2 chapter




  Was this answer useful?  Yes


  • May 14th, 2007

Hi Shiva,

Your explanation seems to be correct, but the example that you have given shows that the visibilty is going from low to high. i.e. From private to default. And as shown...

Private--> default--> protected--> public.

The example should work and reverse should not work.

Correct me if wrong.

  Was this answer useful?  Yes


  • Oct 7th, 2007

Yes you are absolutely right. we can't have high restriced access specifiers in the overridden class. so if  the parent class method's allows protected then the child class methods can allow public but not private.

correct me if i am wrong.

  Was this answer useful?  Yes

well the answer to orignal question asked is -- compilation error

logic --> In a subclass we can't make the method more restrictive than what is there in the super class.


  Was this answer useful?  Yes

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.


Related Answered Questions


Related Open Questions