Java-方法重写

时间:2020-02-23 14:36:42  来源:igfitidea点击:

在本教程中,我们将学习Java编程语言中的方法重写。

什么是方法重写?

当子类或者子类中的方法与父类或者超类中的方法具有相同的名称和类型签名时,则认为子类中的方法将覆盖父类的方法,这就是方法重写。

在下面的示例中,我们具有Parent类和'Child'类,它们继承了父类。

"父类"类具有" greetings"方法,在"孩子"类内部也具有" greetings"方法。

因此,子类的greetings方法将覆盖父类的方法。

class Parent {
  public void greetings() {
    System.out.println("Hello from greetings() method of Parent class.");
  }
}

class Child extends Parent {
  //this "greetings" method of the Child class
  //is overriding the "greetings" method of the
  //parent class
  public void greetings() {
    System.out.println("Hello from greetings() method of Child class.");
  }
}

//the main class
public class Example {
  
  //the main method
  public static void main(String[] args) {

    //creating an object of the Child class
    Child obj = new Child();

    obj.greetings();

  }
}
$javac Example.java 
$java Example
Hello from greetings() method of Child class.

因此,在上面的输出中,我们可以看到我们从Child类的greetings方法获取输出,并且它覆盖了Parent类的greetings方法。

如何从子类访问父类的重写方法?

要访问在子类中被覆盖的父类的方法,我们必须使用super关键字。

在下面的示例中,我们从子类中调用父类的重写方法。

class Parent {
  public void greetings() {
    System.out.println("Hello from greetings() method of Parent class.");
  }
}

class Child extends Parent {
  //this "greetings" method of the Child class
  //is overriding the "greetings" method of the
  //parent class
  public void greetings() {

    //to access the overridden method "greetings"
    //of the Parent class we are using super
    super.greetings();

    System.out.println("Hello from greetings() method of Child class.");
  }
}

//the main class
public class Example {
  
  //the main method
  public static void main(String[] args) {

    //creating an object of the Child class
    Child obj = new Child();

    obj.greetings();

  }
}
$javac Example.java 
$java Example
Hello from greetings() method of Parent class.
Hello from greetings() method of Child class.

因此,在上面的输出中,我们可以看到我们从父类和子类的greetings方法中都获得了输出。

为什么要使用方法覆盖?

Java中的方法重写为我们提供了一种实现运行时多态的方法。
因此,我们使用通用方法创建了一个通用类,该通用类可以由子类继承,并且如果需要可以重写。