-
内部クラスとは何ですか?
- ネストされたクラスは、静的クラスと非静的クラスの 2 つのタイプに分類されます。
- 静的として宣言されたネストされたクラスは、静的ネストされたクラスと呼ばれます。
- 入れ子になった非静的クラスは内部クラスと呼ばれます。
-
匿名内部クラスは何にコンパイルされますか?
内部の非静的クラスへ
-
final
匿名クラスを作成するときにキーワードを使用するのはなぜですか?匿名内部クラスが定義されており、この内部クラスの外部で定義されたオブジェクトを使用する必要がある場合、コンパイラーは、それらに渡される参照が不変 (最終) として宣言されることを要求します。このような宣言がないと、プログラムのコンパイル時にエラーが発生します。
-
内部クラスオブジェクトを適切に作成するにはどうすればよいですか?
変数やメソッドなどの内部 (非静的) クラスは、外部クラスのオブジェクトに関連付けられます。内部クラスは、外部クラスのフィールドに直接アクセスすることもできます。このようなクラスには静的メソッドとフィールドを含めることはできません。内部クラスは、外部クラスのインスタンスがなければ存在できません。オブジェクトを作成するには:
Outer outer = new Outer(); Innter inner = outer.new Inner();
-
ネストされたクラスのオブジェクトを適切に作成するにはどうすればよいですか?
ネストされたクラス オブジェクトを作成するための構文は次のとおりです。
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
-
内部クラスで静的メソッド/変数を作成することはできますか?
静的メソッド/変数は、内部クラス (ネストされたクラスではない) で宣言できません。
変数やメソッドなどの内部 (非静的) クラスは、外部クラスのオブジェクトに関連付けられます。このようなクラスには静的メソッドとフィールドを含めることはできません。
-
内部クラスを 3 つ挙げてください。
private static class Holder
HashMap
—からのネストされたクラスjava.util
。- インターフェイス
Map
には がありinterface Entry<K,V>
、これもまたHashMap
別のネストされたクラス内にあり、実装されていますstatic class Entry<K,V> implements Map.Entry<K,V>
。 private static class IntegerCache
クラスでInteger
。
-
内部クラスは Java の多重継承の問題をどのように解決しますか?
なぜなら Java ではクラスの多重継承は禁止されています。この問題は内部クラスの助けを借りて解決されます: 必要なクラスで内部クラスを宣言し、それを必要なクラスから継承します。例:
class Tiger extends Cat { public void tigerRun() { ..... } public void startTiger() { TigerThread thread = new TigerThread(); thread.start(); } class TigerThread extends Thread { public void run() { tigerRun(); } } }
-
インターフェイスベースの匿名クラスとクラスベースの匿名クラスの違いは何ですか?
JLS 15.9.5 による匿名クラスは、新しいクラスの宣言とその初期化が結合された式です。
- クラスを宣言すると、別のクラスのベースとして使用される場合は指定されたクラスから派生する新しいクラスが作成され、インターフェイスのベースとして使用される場合はインターフェイスを実装します。
- 初期化中に、新しいオブジェクトが作成され、そのオブジェクトへの参照が返されます。匿名クラスは具象クラスです。
したがって、インターフェイスベースの匿名クラスとクラスベースの匿名クラスの唯一の違いは、実装する必要がある抽象メソッドの数です。
Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время How при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.
-
Можно ли создать анонимный статический вложенный класс?
Нет, статической становится только переменная, но не класс.
GO TO FULL VERSION