美文网首页互联网科技Java学习笔记程序员
Java之向上转型,向下转型简单理解和实例

Java之向上转型,向下转型简单理解和实例

作者: 架构师启示录 | 来源:发表于2016-11-26 22:10 被阅读925次

开心一笑

【我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我什么也不要,只要你走的时候别忘了带上我就行。】

提出问题

java中的向上转型,向下转型简单理解???

解决问题

励志图片.png

转型基础:有继承关系。

向上转型(upcasting):将子类对象转为父类对象。父类对象可以是接口。(儿子当爸爸)向上转型时,子类的新有的方法都会遗失掉。

向下转型(downcasting):父类引用的对象转换为子类类型,需要强转。(爸爸当儿子)

女神类:

/**
 * 描述:女神
 * @author Ay
 *
 */
class Girl extends Person{

    public Girl(){};

    public Girl(String name){
        super(name);
    };

    public Girl(String id,String name){
        super(id, name);
    }

    public void dress(){
        System.out.println("Girl" + "打扮......");
    }

    public static void birth(){
        System.out.println("Girl" + "降临人世间......");
    }

    public static void die(){
        System.out.println("Girl" + "走向人间天堂......");
    }

}

Person类:

/**
 * 描述:人类
 * @author Ay
 *
 */
class Person extends Object{

    protected String UNIQUE_FLAG = "Person";
    
    public Person(){
        System.out.println("Person created......");
    };

    public Person(String id,String name){
        super(id,name);
    }

    public Person(String name){
        super(name);
    }

    public static void birth(){
        System.out.println("降临人世间......");
    }

    public static void die(){
        System.out.println("走向人间天堂......");
    }

   
}

测试类:

public class AyTest {

    public static void main(String[] args){

        Person person = new Person();
        //向上转型
        Person girl = new Girl();
        girl.birth();
        //报错,向上转型子类的新有的方法都会遗失掉
        //girl.dress();
        //第一种:向下转型
        Girl downCastingGril = (Girl)girl;
        //女孩呼吸  正常运行
        downCastingGril.breath();
        //女孩打扮,正常运行
        downCastingGril.dress();
        //这里运行就会报错,报ClassCastException异常
        Girl errorGirl = (Girl)person;
        //运行错误
        errorGirl.breath();
        //运行错误
        errorGirl.dress();

    }
}    

运行结果:

Person created......
Person created......
降临人世间......
Person呼吸......
Girl打扮......
Exception in thread "main" java.lang.ClassCastException: com.evada.de.Person cannot be cast to com.evada.de.Girl
    at com.evada.de.AyTest.main(AyTest.java:27)

向上转型,静态绑定

public class AyTest {

    public static void main(String[] args){
        Person person = new Person();
        //向上转型
        Person girl = new Girl();
        //这里是静态绑定,打印结果是:降临人世间...... 而不是 Girl降临人世间......
        girl.birth();
    }
}

打印结果:

Person created......
Person created......
降临人世间......

向上转型,动态绑定

就是正常的动态绑定,可参考:Java之前期绑定,后期绑定,简单理解和实例

参考文章

【1】java向上转型和向下转型
【2】Java入门记(二):向上转型与向下转型
【3】Java编程思想(Thinking in Java)
【4】java向上转型与向下转型

读书感悟

来自《浮生六记》沈复

  • 越是不见,越是想见。越是想见,越是不敢。
  • 情之所钟,虽丑不嫌。
  • 从此扰扰攘攘,又不知梦醒何时耳。
  • 你的过去我来不及参与,你的未来我不会再错过。 归纳起来不外乎四个字: 相见恨晚。
  • 我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我 什么也不要,只要你走的时候别忘了带上我就行。”

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!

相关文章

  • Java之向上转型,向下转型简单理解和实例

    开心一笑 【我吓唬他要分手,他一边看足球一边哼哼哈哈地说:“分吧分吧,东西和钱都归你,我什么也不要,只要你走的时候...

  • java多态(重要O!)

    一、多态的语法 关于java语言中的向上转型和向下转型 1、向上转型(upcasting):子 -->父 2、向下...

  • 多态

    Java语言中的向上转型和向下转型, 1向上转型 (upcasting)子———>父 自动类型转换 2 ...

  • JAVA:向下转型和instanceof运算符的应用

    知识梳理 一:向下转型 1.向下转型:向下转型是与向上转型相对的概念,他是用子类引用指向父类实例.如: 这时就告诉...

  • java向上转型和向下转型

    java对象的类型转换对于初学者来说很多时候是蒙的,例如当初开始学的我,#手动狗头。在整理以前学的笔记的时候看到了...

  • Java向上转型、向下转型

    向上转型:父类指向子类对象Person p = new SuperMan(); 例子:Person person ...

  • java向上转型、向下转型

    整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型;b...

  • java的多态性

    1、需有父子类关系,子类通过extends继承父类; 2、java多态性分为向上转型以及向下转型。 向上转型:...

  • Java的向上转型和向下转型

    1.向上提升 孔子装爹案例

  • java复写、向上转型和向下转型

    1.return 代表了返回到主函数去运行,一旦执行了return函数,后面的语句就不在执行。 2.复写(over...

网友评论

    本文标题:Java之向上转型,向下转型简单理解和实例

    本文链接:https://www.haomeiwen.com/subject/dpmgpttx.html