父类强转子类的可能
Java中子类转换成父类是没有任何问题的,那父类可以转换成子类吗?
package javastudy;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Father father1 = new Son();//new后面的Son改成Father将会导致两种不同结果!
Son son1 = new Son();
son1 = (Son)father1;
father1.say();
}
static class Father{
public void say() {
System.out.println("类型转换成功");
}
}
static class Son extends Father {
}
}
运行结果:
Father father1 = new Son();
Father father1 = new Father();
.根据代码显示, 只有我们的父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.
子类继承父类的所有(包括属性以及方法), 也就是说子类包含的内容应该是比父类要大的. 如果正常环境下, 把一个父类转换成子类一定会损失精度. 但是如果父类对象本身就是用子类去new出来的。
就类似于一个本来就是儿子角色的人, 去装了一会儿父亲, 这个角色是可以在未来转换回去的, 但是一个父亲, 永远不可能去装儿子的(滑稽)