Mee*_*shi 13 java oop virtual-functions
我理解什么是java方法调用,并使用它练习了很多例子.
我想知道这个概念的实际情况或需要是什么.如果有人能够提供一个使用它的现实世界场景以及如果这个概念不存在会发生什么,那将是非常有帮助的?
Kep*_*pil 19
这是一个例子.假设我们有2个类:
class A {
public String getName() {
return "A";
}
}
class B extends A {
public String getName() {
return "B";
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们现在执行以下操作:
public static void main(String[] args) {
A myA = new B();
System.out.println(myA.getName());
}
Run Code Online (Sandbox Code Playgroud)
我们得到了结果
B
Run Code Online (Sandbox Code Playgroud)
如果Java没有virtual method invocation
,它将在编译时确定getName()
要调用的是属于A
该类的那个.由于它没有,但在运行时根据myA
指向的实际类确定,我们得到上述结果.
[编辑添加(稍加设计)示例]
您可以使用此功能编写一个方法,将任意数量的Object
s作为参数并打印出来,如下所示:
public void printObjects(Object... objects) {
for (Object o: objects) {
System.out.println(o.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于任何对象组合.如果Java没有virtual method invocation
,则所有对象都将使用不可读的Object来打印toString()
.相反,现在toString()
将使用每个实际类,这意味着打印输出通常更具可读性.
归档时间: |
|
查看次数: |
13902 次 |
最近记录: |