在父类对象与子类对象转换在工厂模式中常用。
先看看子类父类互转的例子。
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父类对象,在转换成子类对象。系统会报错。