面接中、面接官が私に尋ねました
名前のないクラスを作成できますか?
名前のないクラスを作成することが本当に可能かどうかはわかりませんでした。だから、私はノーと言った。
後でググってみたところ、他の人も同じ質問の答えを探していることがわかりましたが、明確な答えは見つかりませんでした。
誰かがこのクラスについて明確に説明してくれれば幸いです。つまり、技術的にはそのクラスは何と呼ばれ、このクラスをどのようにインスタンス化できるのでしょうか?
はい、匿名クラス/構造体と呼ばれます。
C++ の場合:
class {
} x;
x
は型のオブジェクトであり、これ以上作成することはできません。なぜなら、クラスに名前とすべてがないことを考えると、どうすればよいでしょうか....
コンストラクタとデストラクタをどのように呼び出すか
あなたはそうしない。Java と C++ の両方で、コンストラクターとデストラクタはクラスと同じ名前を保持し (それらは PHP__construct
などではありません)、欠落している名前が邪魔になります。
Java では無名クラスとも呼ばれます。
// create a new instance of an anonymous class.
Serializable s = new Serializable() {
};
注: JVM では、すべてのクラスに名前があり、コンパイラによって生成されます。
コンストラクターを定義することはできませんが、ほとんど同じことを行うインスタンス初期化ブロックを持つことができます。
Java では、「匿名内部クラス」を作成できます。詳細な回答については、Java で匿名 (内部) クラスはどのように使用されますか?を参照してください。