最新java虚方法调用 java虚方法的作用汇总

格式:DOC 上传日期:2023-04-20 07:14:05
最新java虚方法调用 java虚方法的作用汇总
时间:2023-04-20 07:14:05     小编:zdfb

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。相信许多人会觉得范文很难写?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。

java虚方法调用 java虚方法的作用篇一

我们已经讨论了方法的重载,也就是子类能够重载父类的方法。以下是小编为大家搜索整理的java虚方法,欢迎大家阅读!更多精彩内容请及时关注我们应届毕业生考试网!

当子类对象调用重载的方法时,调用的是子类的方法,而不是父类中被重载的方法。

要想调用父类中被重载的方法,则必须使用关键字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;

}

}

假设下面的.类继承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;

}

}

现在我们仔细阅读下面的代码,尝试给出它的输出结果:

/* 文件名 : */

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();

}

}

以上实例编译运行结果如下:

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类中的声明。

在调用eck()时,java虚拟机(jvm)调用salary类的mailcheck()方法。

因为e是employee的引用,所以调用e的mailcheck()方法则有完全不同的结果。

当编译器检查eck()方法时,编译器检查到employee类中的mailcheck()方法。

在编译的时候,编译器使用employee类中的mailcheck()方法验证该语句, 但是在运行的时候,java虚拟机(jvm)调用的是salary类中的mailcheck()方法。

该行为被称为虚拟方法调用,该方法被称为虚拟方法。

java中所有的方法都能以这种方式表现,借此,重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型。

s("content_relate");

【java虚方法】相关文章:

1.java程序运行方法

2.java方法重写的方法分析

3.用java重载的方法

4.java调用的几个方法

5.java泛型方法推荐

6.java动态方法调度实例

7.java使用方法集锦

8.java的常见排序方法

9.java parseint解释加方法

【本文地址:http://www.xuefen.com.cn/zuowen/2653969.html】

全文阅读已结束,如果需要下载本文请点击

下载此文档