java 子类转换_java 子类父类相互转换

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

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

classFruitTest {

String str= "FruitTest";public String get() {returnstr;}public void set(String str) {this.str =str;}

}class AppleTest extendsFruitTest {

String str= "AppleTest";

}

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

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

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

class AppleTest extendsFruitTest {

String str= "AppleTest";public String get() {returnstr;};

}

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

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

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

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

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

FruitTest obj = new AppleTest();

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

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


版权声明:本文为weixin_39814393原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。