探究继承父类变量和方法区别



/**
 * Description:<br>
 * 网站: <a href="http://www.crazyit.org">疯狂Java联盟</a><br>
 * Copyright (C), 2001-2022, Yeeku.H.Lee<br>
 * This program is protected by copyright laws.<br>
 * Program Name:<br>
 * Date:<br>
 * @author Yeeku.H.Lee kongyeeku@163.com 公众号: fkbooks<br>
 * @version 1.0
 */
class Base
{
	int count = 2;
	public void display()
	{
		System.out.println(this.count);
	}
}
class Derived extends Base
{
	int count = 20;
	@Override
	public void display()
	{
		System.out.println(this.count);
	}
}
public class FieldAndMethodTest
{
	public static void main(String[] args)
	{
		// 声明、创建一个Base对象
		Base b = new Base();             // ①
		// 直接访问count实例变量和通过display访问count实例变量
		System.out.println(b.count);
		b.display();
		// 声明、并创建一个Derived对象
		Derived d = new Derived();       // ②
		// 直接访问count实例变量和通过display访问count实例变量
		System.out.println(d.count);
		d.display();
		// 声明一个Base变量,并将Derived对象赋给该变量
		Base bd = new Derived();         // ③
		// 直接访问count实例变量和通过display访问count实例变量
		System.out.println(bd.count);
		bd.display();
		// 让d2b变量指向原d变量所指向的Dervied对象
		Base d2b = d;                    // ④
		// 访问d2b所指对象的count实例变量
		System.out.println(d2b.count);
	}
}

继承成员变量和继承方法之间存在这样的差别 ,所以对于一个引用类型的变直而言,当通过该变量访问它所引用的对象的实例变量时,该实例变量的值取决于声明该变量时的类型(Base bd = new Derived();  这个声明的类型是指Base 父类  ):当通过该变量来调用所引用的对象的万法时,该方法行为取决于它所头际引用的对象的类型(Base bd = new Derived();  这个实际引用的类型是指Derived 子类

也就是 说  父类引用指向 子类时   

当父类和子类都有相同变量时,会优先调用父类,当子类重写父类方法时,优先调用 子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值