假设我有 A 类和 B 类。B 类扩展了 A 类。A 类有一个方法。
public class notimportant
{
public void one()
{
}
}
public class A extends notimportant
{
public void one()
{
//assume there is a super class making this call legal which doesnt do anything
super.one();
System.out.println("blah");
}
}
public class B extends A
{
}
A var1 = new B();
如果我调用“var1.one();”输出最终会是:
“废话” “废话”
因为它在 B 类中创建了“one()”的本地副本,然后读取调用“super()”的副本,从而将其引导至 A 类中的方法“one()”,或者它只是打印
“废话”
因为它知道直接看A类
编辑:希望现在更清楚了。
最佳答案
它将遵循您当前编写的方式:
-> New object of class
B
-> Call method
One
on this object-> First line calls supermethod, proceed to execute it
-> Second line prints out after that
尽管您的代码根本无法编译,您可能需要清除它。是什么阻止您亲自进行测试?
这是您所描述的新情况。一切仍然按预期工作,您只需添加一层即可。
public class C {
public void test() {
System.out.println("Inside C");
}
}
public class B extends C {
public void test() {
super.test();
System.out.println("Inside B");
}
}
public class A extends B {
public static void main(String[] args) {
A obj = new A();
obj.test();
}
}
输出:
Inside C
Inside B
关于java - 如果一个类继承了一个方法,那么在该类上调用该方法是否指向父类(super class),或者是否在子类中创建本地副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366802/