【Java】覆写备注

覆盖

在继承关系中,覆盖是指通过在子类中重叠超类方法的处理,以改变处理结果。

在继承关系以外的情况下,这种现象不会发生,但在创建继承的子类时,请注意可能会意外地覆盖超类的一些内容,因为你可能对超类了解不够。

覆盖机制的原理

    1. 父类调用子类实例的方法

 

    1. 在子类中寻找该方法

 

    如果存在该方法,则调用它。

换句话说,如果在子类中存在与超类同名的方法,则优先执行子类的方法。

换句话说,结果就像”方法的内容被累加”一样。

示例代码

这是继承自父类的超级类。

public class SuperOverride {
    public void testOverride() {
        System.out.println("オーバーライド前はこの表示が出ます");
    }

}

这是一个继承了超类的子类。

// スーパークラスを継承します
public class SubOverride extends SuperOverride {
    public void testOverride() {
//testOverrideメソッドをオーバーライドします。
        System.out.println("オーバーライドされるとこの表示になります");
    }
}

我們在這個班級中進行執行。

public class Main {

    public static void main(String[] args) {
        SubOverride subor = new SubOverride();
        subor.testOverride();
    }

}

运行结果

オーバーライドされるとこの表示になります

解释上述代码的话

通过在子类 SubOverride 中重写 testOverride 方法,输出结果被覆盖为重写的内容。

避免覆写的写法(示例)

如果要输出未被覆盖的内容,可以这样描述。

// スーパークラスを継承します
public class SubOverride extends SuperOverride {
    public void testOverride() {
//testOverrideメソッドをオーバーライドします。

            //スーパークラスのtestOverride メソッドの呼び出し
        super.testOverride();
    }
}

正如代码中所写,通过使用”super”关键字,调用testOverride()方法。通过这样做,将调用超类SuperOverride类的testOverride()方法。

Override的使用示例

在特定的子类中,有一个使用例,它修改或改变了该方法的处理内容。

我认为当你希望在不改动大本超类的情况下,仅将修正内容应用于子类时,覆写非常方便。

特别是在角色扮演游戏中,当角色执行特定的动作时,经常会使用覆盖。

所有角色都要覆盖并重写它们各自固有的“attack”方法。

    • ナッシーは「ねむりごな」

 

    • ルージュラは「あくまのキッス」

 

    ダグトリオは「じわれ」

以这种方式增加内容。

【Nassy.java】→ 【Nassy.java】纳西.java

    public void attack() {
        // ねむりごなの処理
    }

【健太的.java】

    public void attack() {
        // はかいこうせんの処理を書く
    }

【Dugtrio.java】 【地鼠三组.java】

    public void attack() {
        // じわれの処理を書く
    }

我认为,只需编写不同的部分,就可以实现高效的代码,如上所述。

bannerAds