我就是喜欢对照题目来讲更好理解
上题目
class Super {
public void m1(){
System.out.println("m1() in Super");
}
public void m2(){
System.out.println("m2() in Super");
}
}
public class Sub extends Super{
public void m1(){
System.out.println("m1() in Sub");
super.m1();
}
public static void main(String[] args) {
Sub s=new Sub();
s.m1();
s.m2();
}
}
1. Sub s=new Sub();
我们发现子类跟父类都没有构造方法!!!(amazing)
有人就会问那会不会子类继承父类实例方法先实现父类实例方法呢当然不会
所以通过实例化对象s.m1()调用的是子类中的m1()方法
System.out.println(“m1() in Sub”);
super.m1();
super.m1();这里则是实现父类的对象,super(子类调用父类)
再继续看看s.m2();
他子类中没有m2()这个方法啊,那没事Sub继承了Super嘛直接继承了Super中的方法m2()
所以最后的答案是
// m1() in Sub
// m1() in Super
// m2() in Super