10

非静的内部クラスを として宣言するとはどういう意味finalですか?

私はgoogleとstackoverflow.comでも多くのリンクを試しましたが、それらはすべて、最終的な内部クラス自体ではなく、最終的なメンバーにアクセスする内部クラスを扱っているようです。Googleでこのリンクを見つけましたが、それでも説明していません。

事前にサンクス!

4

3 に答える 3

7

finalトップレベル クラスの作成と内部クラスの作成の間に意味上の違いはありませfinalん。クラスから継承できないことをコンパイラに伝えます。クラスのマーキングfinalは、コンパイラが仮想テーブルのルックアップをスキップできるようにするために行われることがありますが、これは多くの場合、時期尚早のマイクロ最適化と見なされます。

于 2012-06-14T05:51:39.377 に答える
0

final と宣言されている外部クラスと同じセマンティクスを持ちます。クラスは拡張できません。

次の例を検討してください。

public class MyClass {
  public class A {
  }
  public class B extends A {
  }
}

final 修飾子を A に追加すると、コンパイル エラーが発生します。

于 2012-06-14T05:49:54.843 に答える
0

その文脈では、内部クラスは外部クラスと何の違いもありません。したがって、次のコードは完全に有効です。

class Outer {
 int some_member;

 class Inner {
 void method();
 }
}

class OuterExtendsInner extends Outer.Inner{

}

誰もが知っているように、クラス final を宣言する目的は、内部クラスの場合と同じように、外部の侵入者がクラスをサブクラス化し、その機能を悪用するのを防ぐことです。

于 2012-06-14T07:24:01.750 に答える