Java中的多态
多态访问成员变量-编译看左边(父类),运行看左边(父类)
多态访问成员方法-编译看左边(父类) ,运行看右边(子类)
多态访问静态方法-编译看左边(父类) ,运行看左边(父类) - 这种写法是不成立
//父类
public class Person {
public void walk() {
System.out.println("走......");
}
public void fly() {
System.out.println("我是普通人,不会飞......");
}
}
//子类
public class SuperMan extends Person {
public void fly() {
System.out.println("飞去救人......");
}
}
public class Application {
public static void main(String[] args) {
Person p1 = new SuperMan();
p1.fly();
}
}
多态中向上转型和向下转型
向上转型:Person p = new SupperMan();
向下转型:SupperMan sm = (SupperMan)p;
注意:向下转型时,父类的真实对象必须是子类对象,否则会有类型转换异常ClassCastException
多态的好处和弊端
好处:方便维护,扩展性好
弊端: 在方法中使用父类当作参数时,方法内部不能使用父类访问子类的属性和方法