java - super 的使用以及如何替换它,Java
问题描述
我的问题是是否有办法替换 super 仍然调用父方法或父变量?
如果有办法,是不是类似于使用super?
简而言之,超级可替代吗?
解决方案
某些语言不实现子类化的概念(如早期版本中的 Visual Basic)。调用“超类方法”的一种解决方法是实现委托模式,并在那里实例化“超类”(不是真正的超类)。然后,超类不是通过关键字调用的super
,而是通过委托模式调用的。要了解委托模式,请参阅设计模式文献 - 或者只是https://en.wikipedia.org/wiki/Delegation_pattern
这个概念描述了如何super
用委托代替——但在 Java 中没有必要这样做。干脆不要这样做。
是的,有一个区别:当你实例化一个 java 对象时,你有这个对象实例,它提供了它的超类中的所有方法等。当您使用委托模式实现解决方法时,您有第二个实例(在这种情况下,超类委托将是一个单独的实例)。
推荐阅读
- javascript - Knex JS“或”在 .where() 内?
- json - JSONDecodeError:期望值:使用 Json 的第 1 行第 1 列
- azure - Azure Blob 创建未触发 Azure 数据工厂事件触发器
- c# - 如何在基于 db 的多线程通知/电子邮件发件人中减少 CPU 使用率
- c - 一个处理数组元素的函数
- html - 在 Shiny 中的图像后添加换行符
- java - 如何从主类调用静态方法?
- python - 如何在keras中包装张量流RNNCell?
- sql-server - 计算新变量
- c# - 在 IIS8 上发布后,Web 配置中连接字符串的 ASPNET_REGIIS 加密不起作用