从对象的内存角度来理解父类引用指向子类对象

本文通过一个Java示例程序演示了在类继承中方法重载与成员变量及静态方法隐藏的现象。子类Boy继承自父类Person,通过实例化Boy对象并将其向上转型为Person类型,调用eat()方法和访问a变量,展示了多态性下方法的具体执行过程与变量查找规则。

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

http://zhidao.baidu.com/link?url=f8fdbIv5VtyNCLrM-fXu6ATdH09ZQnBLctSUzWayNqSAoWaicIOT7y7wFme97bbPkqFBVMAQau6faBMUIyUHJ_

注:成员方法可以被重载,成员变量和静态方法被隐藏。


以下代码证明这一点。


public class Test {


    public static void main(String[] args) {
        Boy b = new Boy();
        b.eat();
        System.out.println(b.a);
        
        Person p = b;
        p.eat();
        System.out.println(p.a);
    }


}


class Person {
    int a = 1;    
    void eat (){
        System.out.println("Person is eating.");
    }
}


class Boy extends Person {
    int a = 2;
    void eat (){
        System.out.println("Boy is eating.");        
    }
}


================output=============

Boy is eating.
2
Boy is eating.
1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值