4

Java のメソッド非表示の概念について読んだことがありますが、その利点を理解しているかどうかはわかりません。メソッドの隠蔽はどのような場合に役立ちますか?

4

2 に答える 2

4

ここで詳細を読むことができますhttp://docs.oracle.com/javase/tutorial/java/IandI/override.html

つまり、スーパークラスの静的メソッドと同じシグネチャを持つ静的メソッドをサブクラスに実装できるという利点があります。これができない場合、そのようなメソッドをサブクラスに追加することはできず、そのようなメソッドをスーパークラスに追加すると、そのすべてのサブクラスがコンパイルに失敗します。

ところで: static メソッドを final にすることで非表示を許可しないようにすることができます。

class Superclass {
    public static final void method() { }
}

class Subclass extends Superclass {
    public static void method() { } // doesn't compile
}

メソッドを非表示にできるようにするために、非最終にすることができます

class Superclass {
    public static void method() { }
}
于 2012-08-22T12:16:20.177 に答える
3

これには「利点」はありません。単に、関連するクラスの静的メソッドがたまたま同じシグネチャを持つ状況に対処するために言語仕様が決定した方法です。言語設計者は、「オーバーライド」機能を提供する賢明な方法を見つけられなかったため1、簡単な方法を採用しました。


1静的メソッドのオーバーライドを抽象 OO レベルで機能させる方法があります。ただし、代替案は理解しにくいものです。

于 2012-08-22T12:20:17.233 に答える