0

私は抽象クラスを持っています:

abstract class Shape {

    public String color;
    public Shape() {
    }
     public void setColor(String c) {
        color = c;
    }
    public String getColor() {
        return color;
    }

    public double area() {
        return 0;
    }
}

これは非抽象メソッドを提供し、次のように初期化します。

     Shape object = new Shape();

そのため、初期化時にまだエラーが発生しますが、なぜですか? クラスに抽象メソッドを 1 つ提供すると、クラスを初期化できないことが理解できます。この状況で、まだエラーが発生するのはなぜですか? どんな助けでもいただければ幸いです

4

2 に答える 2

7

初期化してもエラーが発生しますが、なぜですか

クラスが抽象的だからです。抽象クラスは、抽象メソッドがあるかどうかに関係なく、直接インスタンス化することはできません。JLSセクション 8.1.1.1から:

クラス インスタンス作成式 (§15.9) を使用して抽象クラスのインスタンスを作成しようとすると、コンパイル エラーになります。

抽象メソッドがなく、クラスを直接インスタンス化できるようにする場合は、クラスを非抽象化します。抽象メソッドを持たないクラスを抽象化する唯一の理由、具象サブクラスの使用を強制することです。

于 2013-04-04T05:45:45.537 に答える
0

いいえ、抽象クラスをインスタンス化することはできません

于 2013-04-04T05:51:59.540 に答える