码迷,mamicode.com
首页 > 编程语言 > 详细

java 子类父类相互转换

时间:2018-05-02 22:20:54      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:类方法   相互转换   extend   span   转换   变量   若是   str   col   

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

子类可以转换为父类,如下父类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;  这两句是正确的。

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

 

java 子类父类相互转换

标签:类方法   相互转换   extend   span   转换   变量   若是   str   col   

原文地址:https://www.cnblogs.com/deltadeblog/p/8982594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!