public class Info {
/**
* 只要修饰符不是private(default,public,protected)
* 只要子类重写了该方法,该方法无条件被取代
* 如果修饰符是private,该方法在本类中无法被取代
* @return
*/
protected String getInfo() {
return "I am Info!";
}
/**
* 调用getInfo()方法
* 如果getInfo()方法被重写了,将无条件调用重写后的方法
* 如果getInfo()方法是private,无法被重写
*/
public void info() {
if(this.getClass() != Info.class) {
//能否在知道子类可能重写getInfo()方法时,仍调用本类中的getInfo()方法???
}
System.out.println(getInfo());
}
}
public class Child extends Info {
//只要Override注解成功,将取代父类中的getInfo()行为
@Override
public String getInfo() {
return "I am Child!";
}
}
public static void main(String[] args) {
Info info = new Child();
info.info();//I am Child!
}