java 对象继承 this指向产生的一些思考

#先上代码#

package com.xiaohe.c;

public class ParentBase
{

    private String a;
    
    private Integer b;
    
    public static void main(String[] args) {
        Sun sun = new Sun("1",2,"3");
        System.out.println(sun.getParentA());
        System.out.println(sun.getA());
    }
    
    public String getA() {
        System.out.println(this);
        return this.a;
    }
    
    public void setB(Integer b) {
        this.b = b;
    }
    
}

class Sun extends ParentBase {
    private String c;
    
    private String a;
    
    public Sun(String a, Integer b, String c) {
        this.a = a; 
        super.setB(b); 
        this.c = c; 
    }
    
    public String getA() {
        return this.a;
    }
    
    public String getParentA() {
        return super.getA();
    }
    
    
}

 #监控截图#

上边两张图可以看出this的指向都是同一个内存空间,可能在此时你有一些疑问,父类中的this不就是子类对象自己吗?继续往下看,上图。

上图可以看出,如果this是指向子类的,那在父类中调用this.a 不应该是null,但是现在获取的是null,是不是有些疑问。继续看。

在子类中调用this.a 获取到的数据是有值的。此时你对继承是不是有些深入的思考了,我们再来做一个测试,在父类中调用只在子类中存在的成员变量。看看会有什么结果?上图

编译器报错!直接pass,以上就是对extends 中的this指向问题引发的思考,欢迎各位批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值