Java 变量隐藏方法重写概念

2023-12-27

我正在努力理解 Java 继承的变量、阴影方法和重写概念。

Case 1:

class Car{
   public int gearRatio = 8;
   public String accelerate() {  return "Accelerate : Car";  }
}
class SportsCar extends Car{
   public int gearRatio = 9;
   public String accelerate() {  return  "Accelerate : SportsCar";  }
   public static void main(String[] args){
      Car c = new SportsCar();
      System.out.println( c.gearRatio+"  "+c.accelerate() );
   }
}

输出:8 加速:跑车。

Case 2:

public class TestClass{
   public static void main(String args[ ] ){
      A o1 = new C( );
      B o2 = (B) o1;
      System.out.println(o1.m1( ) );
      System.out.println(o2.i );
   }
}
class A { int i = 10;  int m1( ) { return i; } }
class B extends A { int i = 20;  int m1() { return i; } }
class C extends B { int i = 30;  int m1() { return i; } }

输出:30、20

因此,如果我理解正确的话,除非显式调用子类变量,否则总是调用超类变量。但对于调用子类重写方法的方法则相反,除非显式调用超类。

我认为变量和方法应该工作相同,否则在创建具有相同变量的子类时应该出现编译错误。

有人可以解释一下这是否正确以及为什么 java 会这样工作吗?


我认为变量和方法应该工作相同,否则在创建具有相同变量的子类时应该出现编译错误。

嗯,这根本不是 Java 的工作方式。

变量是not多态处理 - 不存在“覆盖”变量的概念。然而,方法,are多态处理。行为可以专门化,但不能state.

请注意,如果您的变量是私有的(它们几乎总是应该如此),则这种情况永远不会可见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 变量隐藏方法重写概念 的相关文章

  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其

随机推荐

  • Elasticsearch - preIndex

    我正在执行提到的维护任务 该任务将拦截 ES 索引操作 并在某些情况下更改字段的内容 我的问题是 我如何操作这些文档 有一个index docs 方法 例如 我获取第一个 也是唯一一个 文档 添加一个字段 然后希望它被持久化 但不幸的是 该
  • 如何使用相当于 C# .NET 中的 #region / #endregion (outlined) 来组织 xml 数据

    我想使用预处理器命令将 XML 数据组织为可折叠和可扩展的 例如 region endregion http msdn microsoft com en us library 9a1ybwek 28VS 71 29 aspxC NET 中的
  • 使用 PHP 通过 email() 发送的电子邮件中的文本方向和对齐方式

    我正在通过 php 自动发送电子邮件 该电子邮件包含希伯来语 方向为从右到左 这是我用于组成消息正文部分的代码 emailMessage table table
  • 在 WHERE 子句中重用计算列

    在 SELECT 语句中 我想在 WHERE 子句中重用计算列 在SQLserver中有什么办法可以做到这一点吗 简化示例 工作 但经过重复计算 SELECT field1 concat field2 field3 AS calc fiel
  • 使用 maven Fabric8 插件将多个 docker 镜像保存到一个 tar.gz 文件中

    我们正在使用io fabric8 docker maven plugin 0 27 2构建 docker 镜像 我的 Maven 项目由 3 个模块组成 module1 module2 and module3 每个模块都会根据每个模块中存在
  • SpriteKit - 制作精灵抵抗重力(如气球)

    有谁知道我怎样才能让我的SKSpriteNode反抗重力 我想过反转默认重力 但意识到我也需要东西掉落 看起来应该很简单 但通读文档后我不知道该怎么做 Thanks Update 在 iOS 8 OS X Yosemite 10 10 中
  • 按下按钮时颤动更改文本

    伙计们 我会尝试在单击时更改按钮上的文本 我的代码 bool pressGeoON false bool cmbscritta false RaisedButton shape new RoundedRectangleBorder bord
  • 通过命令行的 Eclipse 和 Maven

    我可以通过跳过包含文件夹的原型选择 在 Eclipse IDE 版本 3 71 中创建一个简单的 Maven 应用程序 Edit 2以及其他文件夹 src main resources src test resources 如果我使用命令行
  • 是否可以在 Postgres 的 CTE 语句中多次二次使用返回值?

    我想在一个 CTE 中插入主表后 将外键插入到多个表中 我找不到解决方案 所以这很可能是不可能的 看这个例子 CREATE TABLE test main main id serial NOT NULL main name characte
  • C++11 中的通用函数指针

    我目前正在用 C x0 编写一个方法执行队列 我已经实现并验证了基本的队列机制 但想用一个选项来修改它push 自动删除所有先前对特定方法的调用 queue push this Obj foo 1 queue push this Obj f
  • 在 CSS 中使用颜色名称代替颜色代码有什么缺点吗?

    例如写作red比更有效 cc0000 它的字符较少 占用空间较小 并且更容易记住 使用有什么缺点吗颜色名称 http www somacon com p142 php超过十六进制代码或 RGB 值 这包括在多开发人员环境中进行编程 不同的浏
  • 将 CLRegion 转换为 MKMapRect 或类似的

    我想将 CLRegion 中心和半径 转换为两点 左上 右下 坐标集 我看过这个答案 但不合适 将 MKCoordinateRegion 转换为 MKMapRect https stackoverflow com questions 927
  • 连接点和计算区域

    这是我的第一篇文章 所以请友善 我有一个具有 3 10 个坐标的矩阵 我想连接这些点成为最大尺寸的多边形 我尝试 fill 1 生成一个图 但如何计算该图的面积 有没有办法将绘图转换回矩阵 你会推荐我什么 先感谢您 1 x1 0 0 0 5
  • Android Studio 4.2 布局渲染错误

    布局预览最近停止工作 我无法修复它 当问题出现时我最近改变的事情是 从 4 1 更新到 4 2 根据此处的说明更改了一些目录位置 https developer android com studio intro studio config
  • 在 Visual Studio 2012 .SDF 文件中,未替换(提交)我对原始文件的更改

    我在插入 SQL CE 数据库时遇到问题 我写了一些代码 然后当我需要数据库时 我右键单击投影 添加新项目 本地数据库 之后它让我选择一个数据模型 我选择了 数据集 这已在我左侧的服务器资源管理器下为我创建了一个数据库 并且在我右侧的解决方
  • 删除对象数组中的重复项 Javascript

    我有一个对象数组 list x 1 y 2 x 3 y 4 x 5 y 6 x 1 y 2 我正在寻找一种有效的方法 如果可能的话 O log n 删除重复项并最终得到 list x 1 y 2 x 3 y 4 x 5 y 6 我试过了 u
  • 在java中填充数字直到字符串长度为8个字符?

    我正在阅读 但找不到完整的片段 我正在寻找一个函数 它接受一个字符串并在左侧填充零 0 直到整个字符串的长度为 8 位 我找到的所有其他片段只让整数控制要填充的数量 而不是让整数控制填充的数量 直到整个字符串的长度为 x 位 在Java中
  • 为什么 Oracle 会忽略“完美”索引?

    我有这张表 create table demo key number 10 not null type varchar2 3 not null state varchar2 16 not null lots more columns 和这个
  • HiLo 还是身份?

    只是想获得一些关于主键的意见 使用身份 序列号或使用 HiLo 策略 查询高值并增加应用程序本身的低值 会更好吗 如果您将 SQL Server 2005 2008 与大型表 gt 100 万行 一起使用 您可能需要考虑this http
  • Java 变量隐藏方法重写概念

    我正在努力理解 Java 继承的变量 阴影方法和重写概念 Case 1 class Car public int gearRatio 8 public String accelerate return Accelerate Car clas