关于Java中此引用的问题
我对以下程序中的引用有点怀疑,为什么结果是“我在B中”,我的问题是我们在超类构造函数中是怎样的 能够访问子类方法
class A {
A()
{this.print();}
public void print(){
System.out.println("I am in class A");
}
}
class B extends A {
public void print() {
System.out.println("I am in class B");
}
public static void main(String args[]) {
new Stest();
}
}
# 1 楼答案
不同于C++,<强>重写< /St>方法被调用,即使调用是由超级类构造函数制作的。
# 2 楼答案
this
指调用该方法的对象。因此,它指的是B类对象。您可以参考以下链接:http://www.cs.utexas.edu/~lavender/courses/tutorial/java-05.pdf
# 3 楼答案
# 4 楼答案
我不确定我是否理解你的问题。。。但是如果您想从B调用A的print()方法,可以使用“super”关键字
# 5 楼答案
这是多态性。因此,您正在中运行一个实例iniatilizer,该实例调用print方法。因为类型实际上是B,所以它是针对B执行的方法