java 子类父类相互转换

Posted Delta

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;  这两句是正确的。

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

 


以上是关于java 子类父类相互转换的主要内容,如果未能解决你的问题,请参考以下文章

在java中,两个子类可否互相转换?

父类对象与子类对象相互转化的条件是啥?如何实现它们的相互转化?

父类子类指针相互转换问题

69期-Java SE-009_面向对象-3-001-002

java父类强制转换成子类的问题

java中的多态案例