继承中父类子类有相同的变量与方法情况

本文深入探讨了子类与父类之间的关系,特别关注于相同方法和相同变量的行为差异。通过实例分析,展示了多态性和运行时类型的影响,以及在转型过程中的内存截断现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*父类和子类之间的关系*/

/*
对于子类父类相同变量与相同方法的问题
相同方法:由于多态及运行时类型的知识知,与其运行时类型有关
相同变量:由编译时类型决定,可以从内存角度考虑,对于Child需要保存两个类型的str,
          一个是Father的,一个是Child的。下面(1)句处由子类向父类隐式转型,会发生
		  内存截断,仅保留了Child继承的Father的public部分,则输出的即是Father的str
*/

class Father
{
	String str = "Father";
	
	public Father()
	{
		this.str = "Father1";
		this.setstr();
	}
	
	public void setstr()//注意次数要为public,否则不会跳到Child的set函数中
	{
		str = "Father2";
	}
}

public class Child extends Father
{
	
	String str;
	
	public Child()
	{
		
	}
	
	public void setstr()
	{
		str = "Child2";//调用Father构造函数时,由于多态,会跳到此函数中,但修改的仍是Child的str值,Father的str未发生改变
	}

	public static void main(String[] args)
	{
		Father a1 = new Child();//(1)
		System.out.println(a1.str);  //输出“Father1”
		System.out.println(((Child)a1).str);//输出“Child2”
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值