JAVA继承在处理成员变量和方法时是有区别

  1. JAVA继承在处理成员变量和方法时是有区别的:
    1.方法的行为总是表现出它们实际类型的行为;
    2.实例变量总是表现出声明这些变量所用类型的行为。
  2. 如果在子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中,对于实例变量则不存在这样的现象,即使子类中定义了与父类完全同名的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量。因为继承成员变量和继承方法之间存在这样的差别,所以对于一个引用类型的变量而言,当通过该变量访问它所引用的对象的实例变量时,该实例变量的值取决于声明该变量时类型,当通过该变量来调用它所引用的对象的方法时,该方法行为取决于它所实际引用的对象类型。
  3. 代码如下:
    
    /**
     * Description:
     * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> 
     * <br/>Copyright (C), 2001-2010, Yeeku.H.Lee
     * <br/>This program is protected by copyright laws.
     * <br/>Program Name:
     * <br/>Date:
     * @author  Yeeku.H.Lee kongyeeku@163.com
     * @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);
    	}
    }
    
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值