Java 中向上转换的问题?

2023-12-08

有人可以解释一下为什么会发生这种情况吗:

class Apple {

   String type;

   setType(){
      System.out.println("inside apple class");
      this.type = "apple";
   }

}

class RedApple extends Apple {

    String type;

    setType() {
      System.out.println("inside red-apple class");
       this.type = "redapple";
    }
}

int main {

    RedApple red = new RedApple();
    Apple apple = (Apple) red;
    apple.setType();

}

但产生的输出是:

"inside red-apple class”

为什么.setType()方法执行子类方法,而不是超类方法,即使我向上转换,可以看出吗?


这是因为这就是多态性在 Java 中的工作原理:它总是使用该方法的最派生版本,即覆盖其他版本。获取基类版本的唯一方法是使用super.setType在最衍生的覆盖内。

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

Java 中向上转换的问题? 的相关文章

  • JNA - EnumProcessModules() 未返回所有 DLL?

    我试图从游戏中读取坐标 当我在通过 OpenProcess 接收的 HANDLE 上使用 ReadProcessMemory 以及我在 CheatEngine 中找到的内存时 效果非常好 例如 如果我知道正在运行的进程中的浮点值是0x5AB
  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • Java中RandomAccessFile的并发

    我正在创建一个RandomAccessFile对象通过多个线程写入文件 在 SSD 上 每个线程都尝试在文件中的特定位置写入直接字节缓冲区 并且我确保线程写入的位置不会与另一个线程重叠 file getChannel write buffe
  • jvm中本机代码如何转换为机器代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我读过一些文章说 jvm将字节码转换为机器码 jvm将字节码转换为本机代码 jvm 将字节码转换为系统调用 系统调用又由操作系统与硬件
  • RxJava + Retrofit 2 的正确使用方法

    我有这样的 JSON success true data id 29 name u0420 u0435 u0441 u0442 u043e u0440 u0430 u0446 u0456 u044f u0411 u0430 u0447 u0
  • 如何实现具有LinkedHashMap类似功能的ConcurrentHashMap?

    我用过LinkedHashMap with accessOrdertrue 并同时允许最多 500 个条目作为数据的 LRU 缓存 但由于可扩展性问题 我想转向一些线程安全的替代方案 ConcurrentHashMap在这方面似乎不错 但缺
  • Java 流 - 按嵌套列表分组(按第二顺序列出)

    我有以下数据结构 每个学生都有一个州列表 每个州都有一个城市列表 public class Student private int id private String name private List
  • Glassfish:在部署期间修改 EAR 的部署描述符

    经过几天的搜索 尝试和摇头 我将这个问题发布到 SO 尽管它seems已经得到答复 这是场景 我有一个 EAR 应用程序 目前 包含一个 WAR 和一个 EJB 模块 EJB 模块使用 JPA persistence xml 并且一些无状态
  • Active MQ - HelloWorld 示例异常

    我正在尝试运行 hello world 示例在这里找到 http activemq apache org hello world html I added activemq all 5 5 1 jar已经到图书馆了 它构建成功 但出现以下警
  • 从字符串生成密钥?

    我需要从字符串生成一个密钥 以便我始终可以从同一字符串创建相同的密钥 具体来说是一个Key对象 这样我就可以用它来创建Cipher进而创建SealedObject 这在 Java 中可行吗 我应该考虑什么类 方法组合才能做到这一点 对于 A
  • 按文件名过滤 eclipse 中的警告

    我们使用 Eclipse 进行 Java 开发 并使用 Maven 将 JSP 编译成 servlet 以便在嵌入式 Jetty 实例中使用 这意味着要从 Eclipse 运行该项目 我必须包含 target jsp source 作为源文
  • Java 中的 MP4 容器编写器

    我想找到一个免费的 Java MP4 容器 编写器 我不需要编码器 只需要能够根据预期值写入正确原子的编码器 Bonus对于这样一个库 也可以编写 有效 F4V 我更喜欢纯 Java 解决方案 而不是使用 JNI 或外部可执行文件的解决方案
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • org.apache.commons.codec.digest.Md5Crypt.md5Crypt 函数。 linux下出现异常,windows下正常

    我们正在使用commons codec加密密码 使用org apache commons codec digest Md5Crypt md5Crypt功能 在Windows环境下工作正常 但在CentOS上却抛出异常 我们有3台centOS
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • 获取包中声明的所有 Java 类的名称

    我正在编写一个功能 它将有助于将类放入我的程序的某个包中 另外 我只想要子类某个类的类 我需要这些类才能调用它们的静态方法 有没有一种自动的方法来做到这一点 如果是的话 速度慢吗 如果我不清楚 我想要的是这样的 ArrayList
  • “___ 中的方法 ___() 是在无法访问的类或接口中定义的”编译错误

    我发现了一个奇怪的编译限制 我无法解释 并且我不明白这个限制的原因 示例1 考虑这些类 In package e1 public class C1 enum E1 A B C public E1 x In package e2 import
  • Java LRU 缓存使用 LinkedList

    堆栈溢出的新手 所以请不要介意我以菜鸟的方式问这个问题 我正在尝试使用链表实现 LRU 缓存 我在这里看到了使用 linkedHashMap 和其他数据结构的其他实现 但对于这种情况 我正在尝试使用链表创建最佳优化版本 正如我在技术期间被问
  • 如何在速度模板中检索哈希图值

    如何从速度模板中的以下哈希图中检索值 请帮忙 LinkedHashMap

随机推荐

  • netezza nzload 与 isnumeric 类似的功能吗?

    我有来自一个平面文件的数据 我正在通过该文件加载到 netezza 中nzload 某些字段类型是数字 但是接收到的数据有时可能包含无效字符 我如何检查以确保数据isnumeric在我的进口中 I saw try cast对于 T Sql
  • 当我从 pandas DataFrame 中采样一行后,如何获取一个单元格的值?

    我有一个pandas我已经成功地从 DataFrame 中采样了一行 但问题之一是它只是返回另一个 DataFrame 我需要读取返回的行并获取该行的特定元素的值 My DataFrame好像 Date Open High Low Clos
  • 如何在Amazon ec2上运行seed.rb文件

    最近 我使用 Amazon EC2 托管了 Ruby on Rails 应用程序弹性豆茎 除了我的 seeds rb 文件之外 一切正常 我的 seeds rb 文件在托管时未执行 我在用活动管理员我还在 seeds rb 文件中定义了第一
  • 有没有办法强制执行模块间依赖/初始化顺序?

    使用Azure IoT Edge 我还没有找到任何方法来保证部署中容器 模块的初始化顺序 举例来说 假设我有 2 个模块 A 和 B A 是服务器 B 是依赖于 A 的客户端 据我所知 无法保证 A 在 B 之前启动 Azure IoT E
  • Raspbian QML 性能不佳

    相同的 QML 程序在 Freescale Yocto 和 Raspberry Raspbian 上运行 这两个测试设备具有几乎相同的 CPUarmv7 但Raspbain这边的表现却非常糟糕 并发出此警告 JIT is disabled
  • 使用 sed 从文件中删除 ^M 字符

    我在文件中有这一行 ULNET PA client sgcib broker keplersecurities KEPLER 我尝试去掉 M 回车 字符 所以我使用了 sed s M g 然而 这确实删除了 M 之后的所有内容 root l
  • spring-boot 2.3.6,如何设置mongo的UUID表示?

    我正在尝试升级到 spring boot 2 3 6 我正在使用 spring data MongoRepositories 没有直接调用 MongoClient 或 MongoClient 获取异常 Caused by org bson
  • Scala 类型推断和多个参数列表

    斯卡拉 2 11 8 考虑以下代码 trait Class A def f1 B gt A arg1 Int ord Ordering B Int def f2 B gt A arg1 Int ord Ordering B Int def
  • add()、replace() 和 addToBackStack() 之间的区别

    调用这些方法的主要区别是什么 fragmentTransaction addToBackStack name fragmentTransaction replace containerViewId fragment tag fragment
  • 如何使用 AnkhSVN 2.x 更改存储库 url

    我正在 VS 2008 上使用 Ankh v2 0 5250 202 连接到我的 Subersion 服务器 VisualSVN 服务器 1 6 3 我的存储库的当前网址是https svnserver 8443 svn foo foo t
  • 错误:“std::cout”中的“operator<<”不匹配

    我意识到此错误通常是由于某些语法或类型问题造成的 但我不确定如何解决此问题 我认为这可能与 findRt 的类型有关 vector
  • 如何用 C++ 从文件中读取单词?

    所以我觉得很无聊 决定制作一款刽子手游戏 我在高中第一次学习 C 时就做过这样的作业 但这是在我接触几何之前 所以不幸的是我在任何方面都没有做得很好 学期结束后我一怒之下把所有东西都扔掉了 我想要制作一个txt文档 然后输入一大堆单词 IE
  • Java 关闭挂钩

    使用 IntelliJ IDE java 1 8 IDE 中的 lang level 6 以及命令提示符下的默认值 从命令行 Windows 7 编译并运行 javac cp Main java java cp Main 给出以下代码 我想
  • 在 Fine Uploader 中,如何编辑/更新先前会话中上传的文件的 S3 文件元数据?

    我有一个要求 用户需要编辑 更新在之前的会话中上传的 s3 文件元数据 我已经实现了初始文件列表 但我需要使文件元数据 文件名 标题 在我的情况下是新字段 在显示列表中可编辑 能实现吗 I see 编辑文件功能 但这仅限于文件上传之前 看来
  • 使用绑定和 AJAX 下拉

    我是 ColdFusion 的新手 刚刚开始学习 Ajax 我的问题是 我在网上发现了一些很酷的编码来实现两个下拉菜单 其中第二个菜单取决于第一个菜单中选择的内容 但目标是从选择查询中提取下拉列表中的所有值 我正在使用我刚刚了解到的绑定功能
  • 在python3中输出十六进制值

    我正在使用 python3 编写 shellcode 漏洞 但是 当我尝试输出一些十六进制字节时 例如使用线路 python3 c print x8c xxd 中的值xxd is c28c 而不是预期的8c python2中不会出现这个问题
  • 为什么在添加元素以设置映射多对多时,休眠会从连接表中删除行?

    假设我有两个课程 class A Set b bs class B 这个映射 b
  • Java——创建一个新线程

    我是线程新手 我想创建一些与主线程分开工作的简单函数 但这似乎不起作用 我只想创建新线程并独立于主线程上发生的事情在那里做一些事情 这段代码可能看起来很奇怪 但到目前为止我对线程还没有太多经验 你能解释一下这有什么问题吗 public st
  • 检查属性是否存在

    是否可以检查是否存在使用魔术设置器设置的属性 class Test private vars public function set key value this gt vars key value public function get
  • Java 中向上转换的问题?

    有人可以解释一下为什么会发生这种情况吗 class Apple String type setType System out println inside apple class this type apple class RedApple