【发布时间】:2016-10-24 12:24:42
【问题描述】:
问题:Test16的引用放在My3类型的变量m1中(A行),Test17类中的函数show()与接口My3中的函数show()没有关系; 那么 Test17 类中的 show() 函数如何由 m1 执行。 代码如下:
class Test17{
public void show(){
System.out.println("Show1");
}
}
class Test16 extends Test17 implements My3 {
public static void main(String[] args){
My3 m1=new Test16();//<----Line A
m1.show();
}
}
interface My3{
public abstract void show();
}
以下代码的输出是:Show1
【问题讨论】:
-
为了让
Test16实现My3,它必须提供一个方法public void show()。确实如此,因为这样的方法是在其超类中定义的。所以Test17.show在Test16类中提供了My3.show的实现。 -
请特别注意,虽然,是的,变量
m1引用的对象是Test17,但更具体地说,它是Test16。这就是将Test17.show()与My3.show()联系起来的原因。 -
谢谢大家..我现在明白了。