1

内部クラスに外部クラスと同じ名前の関数がある場合、それはオーバーライドまたはオーバーロードを隠していますか?

たとえば、次のような状況について話しています(ローカルクラス):

class A{
    void f(){
        class B{
            void g(){..}
            ...
        }
    }
    void g() {...}
}

これに対する答えが見つからないようです。

匿名、静的、内部、およびローカル クラスの答えに違いがあるかどうかを指摘していただけますか?

C++ のネストされたクラスに関するこの質問に対する答えは何ですか?

4

4 に答える 4

1

Java の場合、名前を付けたすべてのケースで答えが隠されています。ただし、次の構文を使用して、内部コンテキストから外部メソッドにアクセスすることはできますA.this.g()

于 2013-10-19T15:24:03.970 に答える
0

内部クラスに外部クラスと同じ名前の関数がある場合、それはオーバーライドまたはオーバーロードを隠していますか?

そうでなければ外側のスコープにあるネストスコープで何かを定義すると、これは隠されます。

匿名、静的、内部、およびローカル クラスの答えに違いがあるかどうかを指摘していただけますか?

これは純粋にスコープ ルールに基づいています。より簡単な例は

private final int i;

public void method() {
   long i = 1234; // local variable `i` hides the field.
于 2013-10-19T15:35:51.053 に答える
0

ネストされたクラスが外側のクラスを拡張しない限り、それは隠れています。その場合、両方の言語でオーバーライドされます。匿名/静的/ローカルに違いはありません。

于 2013-10-19T20:24:36.727 に答える