ホームページ > Java > &#&チュートリアル > 抽象クラスをインスタンス化できますか? 修正された回答

抽象クラスをインスタンス化できますか? 修正された回答

Patricia Arquette
リリース: 2024-12-09 21:28:15
オリジナル
658 人が閲覧しました

Can We Instantiate an Abstract Class?  A Revised Answer

抽象クラスを本当にインスタンス化できますか?

面接中に、「抽象クラスをインスタンス化できますか?」というよくある質問が生じます。従来の答えは「いいえ」ですが、この答えは現在では時代遅れになっている可能性があります。

匿名クラスの謎

この謎を解明するために、 Java 言語仕様 (JLS) セクション 15.9.1 および 12.5 によって導入された改訂された理解。具体的には、クラス インスタンス作成式がクラス本体で終わる場合、匿名サブクラス が宣言されます。したがって、インスタンス化されるクラスは、抽象クラス自体ではなく、匿名サブクラスになります。

実践的なデモンストレーション

この概念を説明するために、次のコードを考えてみましょう。

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$1.class ファイルが作成されることがわかります。 new My() {} を介して実行される匿名クラスのインスタンス化の場合。

結論

したがって、「抽象クラスをインスタンス化できますか?」という質問に対する答えが得られます。進化してきました。抽象クラスを直接インスタンス化することはできませんが、その匿名サブクラスのインスタンスを作成できます。これにより、抽象クラスのインスタンスとして動作し、抽象クラス内のメソッドを呼び出したり、プロパティにアクセスしたりできるようになります。

以上が抽象クラスをインスタンス化できますか? 修正された回答の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート