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