zoukankan      html  css  js  c++  java
  • Java中父类强制转换为子类的可能

    之前徒弟问了一个问题, 在Java中, 父类对象到底能不能转换成对应的子类对象?

    到底能不能, 今天就来说说这个问题, 先看下面一段代码:

    package cn.com.hanbinit.test;
    /**
     * 检验父类是否可以强转为子类
     * @author icer
     *
     */
    public class ConvertPro extends Father {
    
        public static void main(String[] args) {
            Father father = new Father();
            Father father1 = new ConvertPro();
            ConvertPro son = new ConvertPro();
            // ConvertPro son1 = (ConvertPro) new Father();
            // son = (ConvertPro)father;
            son = (ConvertPro) father1;
        }
    }
    
    /**
     * 父类
     * 
     * @author icer
     * 
     */
    class Father {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }

    上面代码注释掉的两行是会运行错误的. 根据代码显示,  只有我们的父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.

    子类继承父类的所有(包括属性以及方法), 也就是说子类包含的内容应该是比父类要大的. 如果正常环境下, 把一个父类转换成子类一定会损失精度.  但是如果父类对象本身就是用

    子类去new出来的, 就类似于一个本来就是儿子角色的人, 去装了一会儿父亲, 这个角色是可以在未来转换回去的, 但是一个父亲, 永远不可能去装儿子的.

  • 相关阅读:
    参加“51testing第70期深圳技术沙龙”感想
    软件测试的实质
    JMeter使用技巧
    一个软件测试员的工作与学习(二)
    JMeter基础之元件的作用域与执行顺序
    测试之美测试员的心思你不懂
    博客搬家的原因与文章被转的看法
    ubuntu下配置java环境
    敏捷软件测试初见
    软件测试人员分工
  • 原文地址:https://www.cnblogs.com/hanbin/p/4780607.html
Copyright © 2011-2022 走看看