为什么final类不能被继承,而final方法却可以被继承?

2024-01-31

我对类和方法之间“final”关键字的使用有很大的困惑。即为什么final方法只支持继承,而不支持final类?

final class A{
    void print(){System.out.println("Hello, World!");}
}

class Final extends A{
      public static void main(String[] args){
        System.out.println("hello world");
       }
}

ERROR:

不能继承 Final A 类最终扩展 A{ 最终方法是..

class Bike{
    final void run(){System.out.println("run");}
}

class Honda extends Bike{
    public static void main(String[] args){
        Honda h=new Honda();
        h.run();
    }
}

为什么final类不能被继承,而final方法却可以被继承?

为什么?因为final 意味着不同的事情对于类和方法。

为什么它意味着不同的事情?因为这就是 Java 语言设计者选择设计该语言的方式!

其具有三种不同的含义finalJava 中的关键字。

  • A final班级不能延长。

  • A final方法不能被重写。

  • A final变量初始化后不能再赋值。

他们为什么决定使用final在不同的上下文中意味着不同的事物?可能这样他们就不需要保留 2 或 3 个不同的关键字。 (事后看来,这可能不是最好的决定。然而,这是有争议的……在我看来,争论这是浪费时间。)

值得注意的是,其他关键字在Java中具有多种含义;例如。,static and default(在 Java 8 中)。

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

为什么final类不能被继承,而final方法却可以被继承? 的相关文章

  • 如何配置 Spring-WS 以使用 JAXB Marshaller?

    感谢您到目前为止对此的帮助 我正在更新问题 因为我没有显示我需要的所有内容 并显示了建议的更改 肥皂输出仍然不是我想要的 servlet xml
  • JavaFX 2.0 FXML 子窗口

    经过多次搜索我发现了这个问题如何创建 javafx 2 0 应用程序 MDI https stackoverflow com questions 10915388 how to create a javafx 2 0 application
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库
  • OpenNLP 与斯坦福 CoreNLP

    我一直在对这两个包进行一些比较 但不确定该往哪个方向走 我简单地寻找的是 命名实体识别 人 地点 组织等 性别识别 一个不错的训练 API 据我所知 OpenNLP 和斯坦福 CoreNLP 提供了非常相似的功能 然而 Stanford C
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • 当 JMS Prod 位于辅助 POJO 类中时,如何在事务中包含 JMS Producer

    简短的问题 有没有办法强制无状态 EJB 调用的 POJO 存在于 EJB 的上下文中 以便事务和资源注入可以在 POJO 中工作 具体来说 在我想要做的事情的上下文中 如何在 EJB 的事务中包含 POJO JMS 生产者 该生产者在调用
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • 如何在 Bean Validation 1.0 中构造 ConstraintViolationException?

    我对 javax validation API 感到困惑 我正在编写一个简单的测试来理解它 Sample sample new Sample Set
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • Java和手动执行finalize

    如果我打电话finalize 在我的程序代码中的一个对象上 JVM当垃圾收集器处理这个对象时仍然再次运行该方法吗 这是一个大概的例子 MyObject m new MyObject m finalize m null System gc 是
  • Java:一个函数有多种返回类型...可以使用泛型吗?

    为了简单起见 我有一些程序 如下所示 public String fetchValueAsString String key public DateTime fetchValueAsDateTime String key 我想要类似的东西
  • 为什么 TypeScript 混合了模块和原型模式?

    我正在查看此页面上 TypeScript 生成的 JS 代码 http www typescriptlang org Playground http www typescriptlang org Playground 基本上 要创建一个Gr
  • JPA 将 BigDecimal 作为整数保存在数据库中

    我在数据库中有这个字段 ITEMCOST NUMERIC 13 DEFAULT 0 NOT NULL 在JAVA中 Entity中的字段定义如下 Column name ITEMCOST private BigDecimal itemCos
  • 在 Freemarker 模板中检查 Spring 安全角色和记录的用户名

    有谁知道 freemarker 标签来检查 freemarker 文件中的 spring 安全角色和用户名 我从网络上的几个资源中发现以下代码将打印登录的用户名 但它没有打印用户名 而是打印 登录为
  • java中的预增量/后增量

    有人可以帮助我理解为什么 int i 1 int j 1 int k 1 int l 1 System out println i i System out println j j System out println k k System
  • @Embeddable 中的 @GenerateValue

    我已将实体的 id 分离到一个单独的 Embeddable 类中 该实体如下 Entity Table name users public class Users EmbeddedId private Users pk id private
  • 使用 AmazonSNSClient 发送短信时的授权

    aws 官方文档如何发送短信 http docs aws amazon com sns latest dg sms publish to phone html使用 java 中的 aws SDK 非常简单 但是 当发送如底部示例所示的消息时

随机推荐

  • XML文档选择

    我的 XML 文档格式如下
  • 如何使用systemjs导入fullcalendar v.3.0.1?

    我有app ts import moment from moment moment import from jquery import fullcalendar fullcalendar calendar fullCalendar 但出现
  • Node.js 中的 WordPress 身份验证

    允许用户使用 WordPress 页面中的用户帐户使用 Node js 应用程序的最佳方式是什么 我尝试过在 Redis 中存储会话信息 但我对 PHP 不太熟悉 并且遇到了不存储会话的死胡同 我用过这个guide http simplap
  • Twitter 引导表单字段太小

    我知道这个主题 听起来 很像其他主题 但我已经浏览了所有现有的线程 无论如何 大多数 但我仍然有一个问题 我可以使用帮助 The problem与其他人所描述的并没有太大不同 某些 FORM 元素不显示其完整的垂直高度 其中最值得注意的是
  • 缓存与分页

    所以我在上计算机体系结构课 我想我很难区分缓存和页面 我能想到的唯一解释是 页面是操作系统欺骗程序的方式 让程序在指定的内存区域中完成所有工作 而高速缓存是硬件欺骗操作系统从指定区域读取数据的方式 记忆区域 而实际上并非如此 操作系统是否指
  • DrRacket/Scheme 中的地图、过滤器、Foldr

    编程语言 Scheme DrRacket 我们目前正在回顾map filter and foldr在我的计算机科学课上 我知道这三个函数都可以用来创建抽象函数 但说实话 我对这三个函数之间的区别以及何时使用每个函数感到有点困惑 有人愿意解释
  • sed 删除特定字符周围的空格

    仅删除某些字符周围的空格的最佳方法是什么 让我们说一个破折号 Some String 12345 Here会成为Some String 12345 Here 就像是sed s g s g 但我确信一定有更好的方法 Thanks 如果你的意思
  • ASP.NET MVC 5 中的“通用”OpenID

    我尝试了 ASP NET MVC 5 中的新身份验证功能 我之前使用过DotNetOpenAuth 我知道内置的 Google 提供程序使用 OpenID 1 并且工作正常 但我想在身份验证时使用我自己的 OpenID 提供程序 不幸的是
  • 如何对 ksh93 进行编程以使用 bash 自动完成功能?

    In a 回答 shell 问题的评论 https stackoverflow com questions 933445 a better linux shell 933489 933489 user 修补匠 https stackover
  • PHPforward_static_call 与 call_user_func

    有什么区别forward static call and call user func 同样的问题也适用于forward static call array and call user func array 区别仅在于forward sta
  • 第一个记录的结束日期与下一个记录的第一个日期之间的时间差

    如何查找不同列级别之间的日期差异 以分钟为单位 No SourceID RecordID Start Date End Date 1 1 1 2009 09 07 09 12 00 0000 2009 09 07 11 00 00 0000
  • 如何同步访问indexedDB?

    indexedDB 有一个spec https developer mozilla org en IndexedDB Synchronous API说可以同步访问索引数据库 但还没有实现 我只是想知道是否有办法让它手动同步 我的 JavaS
  • Java冒泡排序错误输出

    我正在尝试实现一个基本的 java 冒泡排序 但我得到了错误的输入 Code is public class BubbleSort public static void main String args int arr sort new i
  • Git 非缓存文件正在上传到 Github

    我正在尝试将我的项目上传到 github 但是它有 1 个非常大的文件 超出了 github 文件大小限制 我不想搞乱大文件存储 我可以忍受 github 上没有这个文件 我已将该文件添加到我的 gitignore像这样的文件 Suppor
  • 将终端移回底部

    我不小心点击了将终端从底部移动到右侧的按钮 我怎样才能让它回到底部 再次单击拆分按钮只会拆分终端 只需移动Terminal向左分割条以加宽Terminal窗口 以便图标Move to Bottom会出现 以便您可以单击它 UPDATE Th
  • 工作副本和分支基础之间的 git diff

    我可以将大师的提示和我的工作副本进行比较 git diff master 我可以将当 前分支的尖端与其来自 master 的合并基础进行比较 git diff master 是一个git diff命令来比较当前分支和工作副本的合并基础 是
  • 根据范围滑块的用户输入重新启动 d3 模拟

    我正在使用构建一个 弹簧 d3 force https github com d3 d3 force布局 我想通过用户输入来操纵它的属性 例如 强度 和 距离 为此 我目前正在使用 输入范围滑块 为了更好地理解 我在 codepen 上制定
  • 以编程方式创建 WebView 并在视图中显示 NSString

    我以编程方式创建了一个 WebView 这很完美 代码如下 我现在需要尝试做的是注入NSStrings进去 我有一个包含 30 个字符串的数组 15 个标题和 15 个正文 是否可以将这些内容显示在 WebView 中 我猜我需要将它们更改
  • 错误:由以下原因引起:java.lang.ClassnotfoundException [重复]

    这个问题在这里已经有答案了 我对编码非常陌生 这是我的第一个应用程序 非常令人沮丧的是 当在设备或模拟器上运行所述应用程序时 出现 不幸的是 应用程序名称已停止 错误 我相信 通过查看 LogCat 我已经将问题定位到错误 java lan
  • 为什么final类不能被继承,而final方法却可以被继承?

    我对类和方法之间 final 关键字的使用有很大的困惑 即为什么final方法只支持继承 而不支持final类 final class A void print System out println Hello World class Fi