多态指的是同一个对象,在不同时刻表现出不同的形态。
格式是:父类类型 子类对象的名字=new 子类构造方法();
要注意的是,多态访问成员变量,编译看左边,运行看左边
例如:
public class Car {
int speed=40;
public void speedup(){
System.out.println("车子加速");
}
public void gasadd(){
System.out.println("车子加油");
}
}
public class Baoma extends Car{
public int price=50000;
public int speed=60;
public void speedup(){
System.out.println("宝马加速");
}
public void gasadd(){
System.out.println("宝马加油");
}
}
public class Test {
public static void main(String[] args) {
Car a=new Baoma();
System.out.println(a.speed);
System.out.println(a.price);
a.gasadd();
} }
在测试类中,当我们要输出a.price时程序会报错,这是因为在Car a=new Baoma();中,父类Car里并没有定义price属性,多态访问成员变量时,编译看左边(父类),运行看左边(父类)。而a.gasadd();输出的结果却是子类中的“宝马加油”,这就说明多态访问成员方法时,编译看左边(父类),运行看的是右边(子类)。
这两者运行的结果不同是因为,子类中可以重写从父类那里继承的方法,而变量不能重写。



