在多态的代码中,成员方法的访问规则是:
看new的是谁,就优先用谁,没有则向上找。
简单规则:编译看左边,运行看右边。
对比:
成员变量:编译看左边,运行还是看左边。
成员方法:编译看左边, 运行看右边。
例如:
package 多态;
public class democ01 {
public static void main(String[] args) {
Fu obj = new Zi(); // 多态
obj.method(); // 父子都有,优先使用子。
obj.methodFu(); // 子类没有,父类有,则向上找父类
// 编译看左边,左边是Fu,Fu当中没有methodZi方法(),所以编译报错
// obj.methodZi(); // 错误写法!
}
}
package 多态;
public class Fu {
public void method(){
System.out.println("父类方法");
}
public void methodFu(){
System.out.println("父类特有方法");
}
}
package 多态;
public class Zi extends Fu {
@Override
public void method() {
System.out.println("子类方法");
}
public void methodZi(){
System.out.println("子类特有方法");
}
}