<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            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

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院