首页 > Java > java教程 > 为什么 Java 中不允许使用'super.super.method();”?

为什么 Java 中不允许使用'super.super.method();”?

DDD
发布: 2024-12-23 11:13:09
原创
1007 人浏览过

Why is `super.super.method();` Not Allowed in Java?

为什么是 super.super.method(); Java中禁止?

使用super.super.method();由于封装问题,在 Java 中是被禁止的。封装旨在防止绕过父类的行为。

虽然有时绕过自己类的行为(在同一方法内)是合理的,但不要绕过父类的行为至关重要。考虑以下类层次结构:

  • Collection:任何项目集合的基类
  • RedCollection:表示红色项目集合的子类
  • BigRedCollection:表示 RedCollection 的子类大红色项目的集合

定义以下内容是合乎逻辑的方法:

  • Collection#add(Item):将项目添加到集合中。
  • RedCollection#add(Item):确保添加的项目为红色的重写方法。
  • BigRedCollection#add(Item):重写方法,确保添加的项目很大并且红色。

这确保子类遵守其父类施加的约束。

但是,如果允许 super.super.add(),恶意的 NaughtyCollection 子类可能会绕过 RedCollection 的红色项目要求:

  • NaughtyCollection#add(Item):忽略红色项目要求,添加任何项目。

这会破坏 RedCollection 建立的不变量,创建一个可能不是红色的项目集合。

因此,super.super Java 中禁止 .method() 调用以维护封装并强制执行类行为。

以上是为什么 Java 中不允许使用'super.super.method();”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板