Javaでは、ネストされたクラスは何ですか、そして彼らは何をしますか?

StackOverflow https://stackoverflow.com/questions/2634239

  •  26-09-2019
  •  | 
  •  

質問

Javaでは、ネストされたクラスは何ですか、そして彼らは何をしますか?

役に立ちましたか?

解決

彼らは他のクラス内のクラスです。彼らはクラスの階層を持つことを可能にし、あなたがそれらをプライベートにするならば、彼らはそれらを使用してクラスの外で公開されていないデータをカプセル化する便利な方法です。太陽には 短いチュートリアル それらについて

他のヒント

Javaの内部クラスの最も重要な用途の1つは、リスナーです。 Anのために別々のクラス全体を書く代わりに ActionListener または同様に、あなたはそれを内側に作成します:

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        ... your code here ...
    }
}

これらの内部クラスは通常、外側のクラスの関数を呼び出し(作成されたオブジェクトへのポインターをキャプチャします)、クリックされたボタンなどを把握する必要があるロジックを使用して単一のコールバックを使用するよりも、多くのきちんとしたコードにつながります。また、ボタンを作成する内部クラスが作成されるため、ボタンを追加または削除するときにいくつかの場所でコードを変更する必要はありません。とてもエレガントです。

ネストされたクラスは、クラス内で宣言されているクラスですが、修飾子を持っています static. 。それらは、クラスを整理する方法であり、外部クラスのプライベート宣言にアクセスできるようにし、外側クラスとネストされたクラスの関係をよりよく示すために使用できます。

内側のクラスとは異なります(同じ方法で宣言されていますが、静的ではありません)。内側のクラスには、インスタンス化できるように参照として外側クラスのインスタンスが必要です。対照的に、ネストされたクラスは、外側のクラスの特定のインスタンスに結び付けられていません。

編集:「ネストされたクラス」は静的ネストクラスまたは内部クラスの両方になると言う人に応えて。わかりました、でもあなたは内側のクラスのネストされたクラスを決して呼ぶことはありませんか?確かにそれはそうではありません 仕様 (A nested class is any class whose declaration occurs within the body of another class or interface.)しかし、それは実際に使用される方法です。

a ネストされたクラス 別のクラス内で定義されているクラスです。 太陽のドキュメント あなたがそれらを使用することを示します:

  • これは、1つの場所でのみ使用されるクラスを論理的にグループ化する方法です。
  • カプセル化を増加させます。
  • ネストされたクラスは、より読みやすく保守可能なコードにつながる可能性があります。

2つのタイプがあります。 静的ネストクラス内部クラス.

a 静的ネストクラス 静的と宣言されたネストされたクラスです。そうです 構文砂糖 他のクラスとの強い関係を示すために、所有クラス内で「隠し」できるように、厳しく結合されたトップレベルのクラスであったでしょう。ただし、静的なネストされたクラスには、実行時に特別な行動や特権はありません。上記のメリットを達成するためのパッケージの便利さです。

an 内部クラス ネストされたクラスがあります いいえ 静的と宣言されました。静的ネストされたクラスとは異なり、内部クラスにはあります 特別なルール/行動 それは内部クラスにのみ適用されます。具体的には、内側のクラスのインスタンスは、外側クラスのインスタンスのコンテキストでのみ存在します。つまり、各内部クラスインスタンスは特定の外側クラスインスタンスに関連付けられています。内側のクラスインスタンスは、関連する外部クラスインスタンスに特別なアクセスできます。これにより、あなたが慣れているかもしれない「友達」のようなアクセスが可能になります C.

詳細を学ぶために、主題に関するドキュメントがたくさんありますが、うまくいけば始めてください。 Nest Logical Stepは、Sunのチュートリアルです ネストされたクラス.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top