ㅤ随心 2022-03-01 23:35 采纳率: 50%
浏览 46

关于 this 关键字,在多态中通过 this 访问属性,属性的值是看编译类型吗?

class test21 {

int a=1;

public void aaa(){
    System.out.println("父类的 "+this.a);
}

public static void main(String[] args) {
   test21 tt = new A();
    tt.aaa();
    System.out.println(tt.a);

}

}

class A extends test21 { // 子类继承父类

 int a=2;

public void aaa(){
    System.out.println("子类的 "+this.a);
}

}

我的疑问是:我在父类中和子类中各写了一个属性a ,在主方法中创建子类对象,然后使用父类引用指向子类对象,子类再重写父类方法,然后我用父类引用 tt 调用 这个方法,(我记得哪个对象调用 this 就是指的那个对象)我知道输出的是子类中方法但是子类中的这个this.a 相当于 tt.a对吗?可是tt 的编译类型是父类呀,为什么输出的值不是父类中的 1 呀

  • 写回答

2条回答 默认 最新

  • 代号9547 2022-03-02 00:03
    关注

    多态简单来说就是父类引用指向子类对象。而且父类有的子类都有,除了类级别的和静态的。所以你可以简单的理解它会优先调用等号右边的子类里的方法。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月1日

悬赏问题

  • ¥15 微信小程序 前端页面内容搜索
  • ¥15 cpu是如何判断当前指令已经执行完毕,然后去执行下条指令的
  • ¥15 C++Codeinject远线程注入
  • ¥15 安装visual studio2022时visualstudiosetup启动不了,闪退。问题代号0x0和0x1389
  • ¥30 java spring boot2.5.3版本websocket连不上
  • ¥15 angular js调外部链接查看pdf
  • ¥15 openFOAM DPMFoam
  • ¥15 将查询到的值,赋值到table指定行中
  • ¥50 docker容器内部启动shell脚本多命令
  • ¥15 请问python的selenium怎么设置referer