首页 > 解决方案 > super 的使用以及如何替换它,Java

问题描述

我的问题是是否有办法替换 super 仍然调用父方法或父变量?

如果有办法,是不是类似于使用super?

简而言之,超级可替代吗?

标签: javasuper

解决方案


某些语言不实现子类化的概念(如早期版本中的 Visual Basic)。调用“超类方法”的一种解决方法是实现委托模式,并在那里实例化“超类”(不是真正的超类)。然后,超类不是通过关键字调用的super,而是通过委托模式调用的。要了解委托模式,请参阅设计模式文献 - 或者只是https://en.wikipedia.org/wiki/Delegation_pattern

这个概念描述了如何super用委托代替——但在 Java 中没有必要这样做。干脆不要这样做。

是的,有一个区别:当你实例化一个 java 对象时,你有这个对象实例,它提供了它的超类中的所有方法等。当您使用委托模式实现解决方法时,您有第二个实例(在这种情况下,超类委托将是一个单独的实例)。


推荐阅读