当前位置: 代码迷 >> J2SE >> 向下转型的有关问题
  详细解决方案

向下转型的有关问题

热度:81   发布时间:2016-04-23 23:38:04.0
向下转型的问题
Java code
package me.luger.base;public class OverrideTest1 {    public static void main(String[] args) {        Sub2 sub = new Sub2();        Sup sup = new Sup();        sub = (Sub2) sup;        sub.method();    }}class Sup{    public void method(){        System.out.println("father");    }}class Sub2 extends Sup{    @Override    public void method() {        System.out.println("children");    }}


我写的向下转型的例子 运行的时候报错,这么向下转型不行的吗?

------解决方案--------------------
Java code
Sup sub = new Sub2(); //向下转型(美女指向长发美女)Sub2 sub2 = (Sub2)sub; //向下转型 运行正常//简单来说 长发的美女 转换为 长发的美女 正常的Sup sub3 = new Sup();Sub2 sub4 = (Sub2)sub3; //不安全的向下转型,编译无错,运行时异常//而 这个就是 美女 转换 为长发美女 很明显错的//楼主可以意会下,本人功底不深厚,还请高手补充
------解决方案--------------------
举个例子:人就是你这里的父类,男人就是你的那个子类,那你可以说男人是人,你总不能说人就是男人吧
------解决方案--------------------
这个怎么行,儿子能生出老爸么?
------解决方案--------------------
猫可以是动物,动物不一定是猫,就是这个道理。
  相关解决方案