zoukankan      html  css  js  c++  java
  • java 子类父类相互转换

    子类转父类 (父类引用指向子类对象)

    子类可以转换为父类,如下父类FruitTest与其子类AppleTest

    class FruitTest {
        String str = "FruitTest";
        public String get() {return str;}
        public void set(String str) {this.str = str;}
    
    }
    
    class AppleTest extends FruitTest {
        String str = "AppleTest";
    }

    FruitTest obj = new AppleTest(); 是正确的

    obj.str 结果为"FruitTest",不是子类中的str("AppleTest")。obj的属性变量都是父类的。

    obj.get() 得到的是"FruitTest",执行的是父类中的方法,但若是子类重写了父类方法,执行的则是子类的方法

    class AppleTest extends FruitTest {
        String str = "AppleTest";
        public String get() {return str;};
    }

    则obj.get()得到的是"AppleTest" 。

    总结:子类可以转换为父类,即父类引用指向子类对象。引用的属性是父类的,方法若果被子类重写则是子类的方法。

    父类转子类(子类引用指向父类对象)

    父类不可以直接转换为子类,AppleTest obj = new FruitTest();  是错误的。

    AppleTest obj = (AppleTest) new FruitTest(); 编译时也会报错。

    FruitTest obj = new AppleTest();
    AppleTest test = (AppleTest)obj;  这两句是正确的。

    父类若转换为子类,父类引用必须指向的是一个子类对象。实质上是将一个指向子类对象的父类引用改为了子类引用。

  • 相关阅读:
    body标签中l的相关标签
    PostgreSQL&PostGIS完全安装
    PostgreSQL常用函数
    Linux 路由 学习笔记 之一 相关的数据结构
    OSPF学习中的问题
    对TCP重传的进一步认识
    TCP 接收窗口自动调节
    [转]struct 用法深入探索
    Memcached缓存瓶颈分析
    C++的try_catch异常
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/8982594.html
Copyright © 2011-2022 走看看