JAVA的多态----父类与子类转换问题

JAVA语言中,对象变量是多态的。每个子类对象都可以作为父类变量引用,但反之不总是可行。如果父类变量引用的是子类对象,可以通过强制类型转换被子类变量引用;而如果父类变量引用的是父类对象,则无法被子类变量引用。总结来说,父类变量可以引用父类或子类实例,但子类变量只能引用子类实例。
摘要由CSDN通过智能技术生成

JAVA语言中, 对象变量是多态的

每个子类对象都算是父类对象(子类对象可以当作父类变量所引用)

那反过来可不可以呢?

答案是取决于父类变量引用的是谁

如果父类变量引用的是子类对象的实例, 可以通过强转被子类变量引用

如果父类变量引用的是父类对象的实例,则不能被为子类变量引用

上代码举例子(本篇一直用这两个类举例子,main测试不同):

一个Father类

package test;

public class Father 
{
	int fatherA;
	Father(int a)
	{
		fatherA=a;
	}
}

一个Son类

package test;

public class Son extends Father 
{
	int sonB;
	Son(int a,int b)
	{
		super(a);
		sonB=b;
	}
	
}

把子类对象赋给父类变量:

package test;

public class MainTest 
{

	public static void main(String[] args) 
	{
		Son son1=new Son(1, 2);
		Father father1=son1;	//子类对象被父类变量引用
		System.out.println(father1.fatherA);
	}

}

结果: 赋值成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值