当前位置: 首页 > news >正文

在Java继承关系中变量访问规则

首先示例代码如下:

class A{public int x = 0;public int get() {return x;}}class AA extends A{public int x = 1;
}class AAA extends AA {public int x = 2;public int get()   {return x;}public static void main(String[] args) {A a = new AA();System.out.println(a.x);System.out.println(a.get());AA aa = new AAA();System.out.println(aa.x);System.out.println(aa.get());}
}
输出结果:
0
0
1
2

解释:
在Java中,字段(或属性)的访问是基于变量的静态类型的,而方法的调用则是基于变量的实际类型(即对象的动态类型)。让我们一步一步分析这个程序的输出。

A a = new AA();

a.x:由于 a 的静态类型是 A,因此访问的是 A 类中定义的 x,它的值是 0。
a.get():这里调用的是 AA 类的 get() 方法,因为 a 实际指向一个 AA 对象。由于 AA 类没有重写 get() 方法,所以它继承了父类 A 的 get() 方法,这个方法返回的是 A 类中的 x,值为 0。

AA aa = new AAA();

aa.x:由于 aa 的静态类型是 AA,因此访问的是 AA 类中定义的 x,它的值是 1。
aa.get():这里调用的是 AAA 类的 get() 方法,因为 aa 实际指向一个 AAA 对象。AAA 类重写了 get() 方法,返回的是 AAA 类中的 x,值为 2。

http://www.lryc.cn/news/224517.html

相关文章:

  • 11. 一文快速学懂常用工具——网络工具(下)
  • 什么GAN生成对抗网络?生成对抗网络可以干什么?
  • 采集Prestashop独立站
  • 通过一道题目带你深入了解WAF特性、PHP超级打印函数、ASCII码chr()对应表等原理[RoarCTF 2019]Easy Calc 1
  • 类直径树上贪心
  • 求职招聘小程序源码系统+社交招聘+多城市招聘 带完整搭建教程
  • Java Web 安全实战:从登录到退出
  • 08.Diffusion Model数学原理分析(下)
  • 什么样的CRM系统更适合外贸企业?
  • selenium自动化测试入门 —— 键盘鼠标事件ActionChains
  • 高级运维学习(十四)Zabbix监控(一)
  • vite + electron引入itk报错
  • 大厂面试题-MySQL为什么使用B+Tree作为索引结构
  • Tomcat的Engine容器
  • vscode绿色行数设置
  • 闪站侠洗衣洗鞋管理系统app小程序开发;
  • 【操作系统】测试一
  • 如何用sklearn对随机森林调参
  • Java中单例模式
  • 第1章 现代通信网概述
  • 99%的时间里使用的14个git命令
  • 适用于 iOS 的 10 个最佳数据恢复工具分享
  • 泛微E-Mobile 6.0命令执行漏洞
  • React 共享组件状态及其实践
  • linux目录说明
  • 成集云 | 英克对接零售O2O+线上商城 | 解决方案
  • java传base64返回给数据报404踩坑
  • 【Delphi】Android 开发HTTP请求出错解决方案
  • Kafka中遇到的错误:
  • 线程安全(JAVA)