1.java语言中,对象变量是多态的,一个父类变量既可以引用一个父类对象,也可以引用任何一个子类对象
注:同一个方法可以实现不同的形态
public class Employee{
private String name;
private double salary;
}
public class Manager extends Employee{
private double bonus;
}
public void f() {
Employee e;
e = new Employee();
e = new Manager();
}
public void g() {
Manager boss=new Manager();
Employee[] staff=new Employee[3];
staff[0]=boss;
boss.setBonus(); //这是对的可以这样用
staff[0]=setBonus(); //这是错误的不能这样调用
}
上面的例子可以看出虽然staff[0]和boss引用的同一个对象但是编译器将staff[0]当成了父类对象,所以不能调用子类的方法。
3.子类对象不能接父类,而用父类定义的子类可以强转
public void g() {
Manager boss=new Manager();
Employee[] staff=new Employee[3];
staff[0]=boss;
Manager m=staff[i]; //子类对象不能接父类
Manager s=(Manager)staff[0]; //staff[0]是用父类定义的子类所以可以强转
}