<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. java虛方法

    時間:2025-10-25 02:50:02 java語言

    java虛方法

      我們已經討論了方法的重載,也就是子類能夠重載父類的方法。以下是小編為大家搜索整理的java虛方法,歡迎大家閱讀!更多精彩內容請及時關注我們應屆畢業生考試網!

      當子類對象調用重載的方法時,調用的是子類的方法,而不是父類中被重載的方法。

      要想調用父類中被重載的方法,則必須使用關鍵字super。

      /* 文件名 : Employee.java */

      public class Employee

      {

      private String name;

      private String address;

      private int number;

      public Employee(String name, String address, int number)

      {

      System.out.println("Constructing an Employee");

      this.name = name;

      this.address = address;

      this.number = number;

      }

      public void mailCheck()

      {

      System.out.println("Mailing a check to " + this.name

      + " " + this.address);

      }

      public String toString()

      {

      return name + " " + address + " " + number;

      }

      public String getName()

      {

      return name;

      }

      public String getAddress()

      {

      return address;

      }

      public void setAddress(String newAddress)

      {

      address = newAddress;

      }

      public int getNumber()

      {

      return number;

      }

      }

      假設下面的類繼承Employee類:

      /* 文件名 : Salary.java */

      public class Salary extends Employee

      {

      private double salary; /pic/p>

      public Salary(String name, String address, int number, double

      salary)

      {

      super(name, address, number);

      setSalary(salary);

      }

      public void mailCheck()

      {

      System.out.println("Within mailCheck of Salary class ");

      System.out.println("Mailing check to " + getName()

      + " with salary " + salary);

      }

      public double getSalary()

      {

      return salary;

      }

      public void setSalary(double newSalary)

      {

      if(newSalary >= 0.0)

      {

      salary = newSalary;

      }

      }

      public double computePay()

      {

      System.out.println("Computing salary pay for " + getName());

      return salary/52;

      }

      }

      現在我們仔細閱讀下面的代碼,嘗試給出它的輸出結果:

      /* 文件名 : VirtualDemo.java */

      public class VirtualDemo

      {

      public static void main(String [] args)

      {

      Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);

      Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);

      System.out.println("Call mailCheck using Salary reference --");

      s.mailCheck();

      System.out.println("\n Call mailCheck using Employee reference--");

      e.mailCheck();

      }

      }

      以上實例編譯運行結果如下:

      Constructing an Employee

      Constructing an Employee

      Call mailCheck using Salary reference --

      Within mailCheck of Salary class

      Mailing check to Mohd Mohtashim with salary 3600.0

      Call mailCheck using Employee reference--

      Within mailCheck of Salary class

      Mailing check to John Adams with salary 2400.0

      例子中,我們實例化了兩個Salary對象。一個使用Salary引用s,另一個使用Employee引用。

      編譯時,編譯器檢查到mailCheck()方法在Salary類中的聲明。

      在調用s.mailCheck()時,Java虛擬機(JVM)調用Salary類的mailCheck()方法。

      因為e是Employee的引用,所以調用e的mailCheck()方法則有完全不同的結果。

      當編譯器檢查e.mailCheck()方法時,編譯器檢查到Employee類中的mailCheck()方法。

      在編譯的時候,編譯器使用Employee類中的mailCheck()方法驗證該語句, 但是在運行的時候,Java虛擬機(JVM)調用的是Salary類中的mailCheck()方法。

      該行為被稱為虛擬方法調用,該方法被稱為虛擬方法。

      Java中所有的方法都能以這種方式表現,借此,重寫的方法能在運行時調用,不管編譯的時候源代碼中引用變量是什么數據類型。

    【java虛方法】相關文章:

    java調用的方法10-22

    java入門方法08-26

    java方法重寫的方法分析03-03

    Java數組操作的方法02-20

    java的常見排序方法03-17

    Java中的clone方法11-07

    Java寫入文件的方法01-29

    Java里的clone方法09-26

    Java語言的構造方法09-20

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人