覆盖java中不同类的方法

时间:2014-08-27 18:20:57

标签: java class override

来自java tutorial

  
      
  • 与实例的超类在同一个包中的子类可以覆盖任何未声明为private或final的超类方法。

  •   
  • 不同包中的子类只能覆盖声明为public或protected的非final方法。

  •   

但有什么区别?如果某个方法未被声明为私有,那么它必须是公共的还是受保护的?

3 个答案:

答案 0 :(得分:3)

这一点可以改为:您只能覆盖您的类可以访问的方法,以及此方法是否为最终

因此,如果要在包中放置基类(或接口)的类,则只能覆盖非最终的 public protected 方法。

如果派生类与基类位于同一个包中,那么您也可以覆盖非最终方法而不使用访问修饰符(包受保护)。

你永远不能覆盖私人方法。

答案 1 :(得分:2)

实际上,没有。

方法可以是public,protected,private或 package private 。 如果您未指定访问修饰符,则该方法为包私有。

很明显,为什么来自不同包的类不能覆盖包私有成员。

答案 2 :(得分:2)

区别在于default(或package-private)访问修饰符。如果未指定访问修饰符,则只有同一包中的其他类可以访问它,无论它们是否为子类。

有关详细信息:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html