<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            java語言

            java虛方法

            時間:2025-05-16 01:12:52 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; //Annual salary

              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-13

            java調用的方法09-04

            java方法重寫的方法分析09-04

            Java語言的構造方法07-17

            Java線程同步的方法05-27

            java程序運行方法08-21

            java的常見排序方法08-31

            java調用的幾個方法07-27

            用java重載的方法09-19

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看