人的記憶力會隨著歲月的流逝而衰退,寫作可以彌補記憶的不足,將曾經(jīng)的人生經(jīng)歷和感悟記錄下來,也便于保存一份美好的回憶。相信許多人會覺得范文很難寫?下面我給大家整理了一些優(yōu)秀范文,希望能夠幫助到大家,我們一起來看一看吧。
java虛方法調(diào)用 java虛方法的作用篇一
我們已經(jīng)討論了方法的重載,也就是子類能夠重載父類的方法。以下是小編為大家搜索整理的java虛方法,歡迎大家閱讀!更多精彩內(nèi)容請及時關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
當(dāng)子類對象調(diào)用重載的方法時,調(diào)用的是子類的方法,而不是父類中被重載的方法。
要想調(diào)用父類中被重載的方法,則必須使用關(guān)鍵字super。
/* 文件名 : */
public class employee
{
private string name;
private string address;
private int number;
public employee(string name, string address, int number)
{
n("constructing an employee");
= name;
s = address;
= number;
}
public void mailcheck()
{
n("mailing a check to " +
+ " " + s);
}
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;
}
}
假設(shè)下面的.類繼承employee類:
/* 文件名 : */
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()
{
n("within mailcheck of salary class ");
n("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()
{
n("computing salary pay for " + getname());
return salary/52;
}
}
現(xiàn)在我們仔細(xì)閱讀下面的代碼,嘗試給出它的輸出結(jié)果:
/* 文件名 : */
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);
n("call mailcheck using salary reference --");
eck();
n("\n call mailcheck using employee reference--");
eck();
}
}
以上實例編譯運行結(jié)果如下:
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類中的聲明。
在調(diào)用eck()時,java虛擬機(jvm)調(diào)用salary類的mailcheck()方法。
因為e是employee的引用,所以調(diào)用e的mailcheck()方法則有完全不同的結(jié)果。
當(dāng)編譯器檢查eck()方法時,編譯器檢查到employee類中的mailcheck()方法。
在編譯的時候,編譯器使用employee類中的mailcheck()方法驗證該語句, 但是在運行的時候,java虛擬機(jvm)調(diào)用的是salary類中的mailcheck()方法。
該行為被稱為虛擬方法調(diào)用,該方法被稱為虛擬方法。
java中所有的方法都能以這種方式表現(xiàn),借此,重寫的方法能在運行時調(diào)用,不管編譯的時候源代碼中引用變量是什么數(shù)據(jù)類型。
s("content_relate");【java虛方法】相關(guān)文章:
1.java程序運行方法
2.java方法重寫的方法分析
3.用java重載的方法
4.java調(diào)用的幾個方法
5.java泛型方法推薦
6.java動態(tài)方法調(diào)度實例
7.java使用方法集錦
8.java的常見排序方法
9.java parseint解釋加方法
【本文地址:http://mlvmservice.com/zuowen/2653969.html】