ホームページ >Java >&#&チュートリアル >Java で抽象クラスをインスタンス化できますか?
面接中に、抽象クラスをインスタンス化できるかどうか尋ねられました。従来であれば、「いいえ」と答えるでしょう。しかし、インタビュアーは、それは可能だと言ってあなたを驚かせました。
これを実証するには、次のコードを考えてみましょう:
abstract class my { public void mymethod() { System.out.print("Abstract"); } } class poly { public static void main(String a[]) { my m = new my() {}; m.mymethod(); } }
my に抽象修飾子があるにもかかわらず、次を使用してそのインスタンスを作成できます。匿名のサブクラス。基本的には、オンザフライでサブクラスを作成し、その参照を抽象クラス参照 m に割り当てます。
Java 言語仕様 (JLS) によると、
"If クラス インスタンス作成式クラス本体で終わる場合、
インスタンス化されるクラスは匿名クラスです。
したがって、この場合、クラスはインスタンス化されたのは私のものではなく、匿名のサブクラスです。
この動作は、コードをコンパイルし、生成されたクラス ファイルをチェックすることで確認できます。 Poly$1.class という名前の新しいクラス ファイルが表示されます。これは、実行時に作成される匿名サブクラスに対応します。
したがって、抽象クラスを直接インスタンス化することはできませんが、匿名サブクラス
以上がJava で抽象クラスをインスタンス化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。