父类对象变成子类对象
在父类对象与子类对象转换在工厂模式中常用。
先看看子类父类互转的例子。
public class employee {
private String name;
private double salery;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalery() {
return salery;
}
public void setSalery(double salery) {
this.salery = salery;
}
public employee( String name,double salery) {
this.name=name;
this.salery=salery;
}
public double raisesalery(double raise) {
salery+=raise;
return salery;
}
}
package MM;
public class manager extends employee{
private double bones;
public double getBones() {
return bones;
}
public void setBones(double bones) {
this.bones = bones;
}
public manager(String name,double d,double bones) {
super(name,d);
this.bones=bones;
}
}
package MM;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
manager boss=new manager("lyc", 29, 10); //定义子类对象
employee staff[]=new employee[3];
staff[0]=boss; //子类对象变成父类对象
manager m =(manager)staff[0]; //父类对象变成子类对象
System.out.println(m.getBones()); //访问成功
employee ss=new employee("dsad", 12289); //定义父类对象
manager ll=(manager)ss; //父类对象变成子类对象
System.out.println(ll.getName()); //访问失败
}
}
运行结果:
注意:
先new子类对象,在转换成父类对象可以通过父类对象访问对应的方法。转换回来之后也能访问子类特有的方法。
但是如果先new父类对象,在转换成子类对象。系统会报错。