【问题标题】:How Does Java Overriding WorkJava 覆盖如何工作
【发布时间】:2013-01-18 06:59:02
【问题描述】:

我有一个愚蠢的困惑,当我们重写父类方法时,这个派生的重写方法是否仍然保存父类方法的代码,或者它是我们可以定义的新方法?

【问题讨论】:

  • 稍微推理一下就能给你答案。如果您的方法还包含被覆盖的父类方法的代码,那么就不需要 super.foo()。或者,如果这样做会造成混乱,因为您作为开发人员将无法选择是否调用被覆盖的方法 super。但是不,除了您编写的代码之外,您的方法不会“保存”任何代码。

标签: java oop overriding


【解决方案1】:

阅读这篇文章以获得清晰的概念。 http://docs.oracle.com/javase/tutorial/java/IandI/override.html

一般我们想扩展超类的方法或者想改变完整的逻辑时。

例如:超类有使用冒泡排序的排序方法。

在派生类中,您希望采用相同的方法,但希望实现快速排序。然后我们进行覆盖。

第二

如果你想先执行超类方法,然后你的子类覆盖方法逻辑,那么我们使用super.methodname()

最后一点如果您覆盖该方法而不是像super.method() 那样调用超类方法,那么它并不意味着它的新方法。这意味着我已经解释了排序示例。

【讨论】:

    【解决方案2】:

    发生的事情正是注释中写的。

    您覆盖该方法,而不是运行该方法的父代码,而是运行当前类的代码

    【讨论】:

    • ...如果您没有明确致电super.method()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2021-08-22
    • 2013-07-10
    相关资源
    最近更新 更多