博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 向上转型与向下转型
阅读量:6826 次
发布时间:2019-06-26

本文共 1309 字,大约阅读时间需要 4 分钟。

 

 

向上转型:子类转父类

Father father1=  new Son();

向下转型:父类转子类

Son son =  (Son)new Father (); // 这样是运行时会报错

Father father1 = new Son(); Son son1 = (Son) father1; // 这样不报错

 

 

通过写一个方法把父类转换为子类

class Father {    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    /**     * 将当前对象转换为子类对象     *     * @param clazz 目标类型     * @return 目标对象     */    public 
T to(Class
clazz) { T instance; try { instance = clazz.newInstance(); } catch (Exception e) { throw new IllegalArgumentException("Failed to create " + clazz.getSimpleName() + " instance.", e); } instance.setName(this.getName()); return instance; }}

 

public class Son extends Father {    private String age;    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }    public static void main(String[] args) {        // 子类转父类,父类再转子类        // Father father = new Son();        // Son son = (Son) father;        // 父类直接转子类        // Son son =  (Son)new Father (); // 运行时会报错        // 父类通过方法转直接转子类        Father father = new Father();        Son son = father.to(Son.class);    }}

 

转载于:https://www.cnblogs.com/ooo0/p/8365660.html

你可能感兴趣的文章
杂物论第一 中华文明的根基
查看>>
c#中 枚举类型的使用(转)
查看>>
linux应用之tomcat的安装及配置(centos)
查看>>
bytes与str
查看>>
转:Socket原理与编程基础
查看>>
linux C 刚初始化后的一个变量在调用一个静态库中函数后被异常修改为乱码
查看>>
记录DHT网络主要功能步骤
查看>>
VS2010使用Qt库
查看>>
Python特殊语法--filter、map、reduce、lambda
查看>>
[原] Jenkins Android 自动打包配置(转)
查看>>
[Redux] Passing the Store Down with <Provider> from React Redux
查看>>
javascript笔记7-事件
查看>>
大数据处理分析的六大最好工具
查看>>
【转】俞军给淘宝产品经理的分享
查看>>
Thrift使用实例
查看>>
Nand flash uboot 命令详解【转】
查看>>
曲线的奇点
查看>>
【Linux】了解服务器的情况
查看>>
解决Spring配置文件不显示design和source, namespace 问题
查看>>
Efficiently traversing InnoDB B+Trees with the page directory--slot
查看>>