能否在同一个Java类中重写一个方法?


当我们有两个类,其中一个类继承自另一个类,并且这两个类具有相同的方法(包括参数和返回类型,例如**sample**),子类中的方法会重写父类中的方法。

也就是说,由于它是继承关系。如果我们实例化子类,则会在子类对象中创建父类成员的副本,因此子类对象可以使用这两种方法。

但是,如果调用该方法(sample),则将执行子类的方法,从而重写父类的方法。

示例

 在线演示

class Super{
   public static void sample(){
      System.out.println("Method of the superclass");
   }
}
public class OverridingExample extends Super {
   public static void sample(){
      System.out.println("Method of the subclass");
   }  
   public static void main(String args[]){
      Super obj1 = (Super) new OverridingExample();
      OverridingExample obj2 = new OverridingExample();
      obj1.sample();
      obj2.sample();
   }
}

输出

Method of the superclass
Method of the subclass

在同一个类中重写方法

在重写时:

  • 两种方法都必须位于两个不同的类中,并且这些类必须存在继承关系。

  • 两种方法必须具有相同的名称、相同的参数和相同的返回类型,否则它们将被视为不同的方法。

  • 子类中的方法的访问限制不能高于超类中的方法。如果尝试这样做,则会引发编译时异常。

  • 如果超类方法抛出某些异常,则子类中的方法应抛出相同的异常或其子类型(可以不抛出任何异常)。

因此,不能重写存在于同一个类中的两个方法,只能重载它们。

更新于:2019年9月10日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.