关于super

来源:百度知道 编辑:UC知道 时间:2024/05/17 22:16:38
//父类:
public class SuperExa {

public SuperExa() {
}
void print()
{
System.out.println("Superclass");
}
public static void main (String[] args)
{
SuperExa p=new SuperExa();
p.print();
SuperExaSub psub=new SuperExaSub();
psub.print();
}

}
//子类:
public class SuperExaSub extends SuperExa{

public SuperExaSub() {
}
void print()
{
System.out.println("Subclass!");
super.print();
}

}
//为什么我把父类中的SuperExaSub psub=new SuperExaSub();
psub.print();删了输出结果却只是superclass帮我解释一下。我初学,谢谢!
//镜湖微波:我按你说的
//父类:
public class SuperExa {

public SuperExa() {
}
void print()
{
System.out.println("Superclass");
}

}
/

super调用父类的方法,在子类中你使用super调用了父类的print()方法,子类中的print()没有被调用,所以输出只会输出superclass,你的子类根本没有被调用

你把main函数写在子类里先,然后创建一个子类的对象去分别调用两个print()函数,调用父类的时候使用super,输出结果就是你想要的结果了

你的子类没有了print()方法,SuperExa和SuperExaSub调用的都是父类的print()方法,输出当然是两个Superclass

如果你在子类里写一个print()的话,就构成方法重写了

用子类的对象分别调用父类的和子类的print()就可以了,调用父类的时候用super()

super 只是说调用父类的方法 你现在 这个子类的print方法都没调用过了 还怎么去执行

呵呵 你没有调用子类的print() 这个方法啊
你只是实力化SuperExa p=new SuperExa(); 这个父类了

子类的print方法没被调用