0

抽象メソッドを含む具象クラスを作成できない理由は何ですか?

抽象メソッド定義なしでオブジェクトが作成されないようにするためだけに強制されますか? または、この制限には別のもっともらしい理由がありますか?

4

4 に答える 4

1

abstractクラスは、定義上、不完全です。abstractしたがって、クラスをインスタンス化することはできません。この定義の興味深い副作用は、abstractすべての具象メソッドを持つクラスを作成できることです。クラスが不完全で、インスタンス化できないはずだと思っているだけです。

于 2015-10-15T21:19:17.713 に答える
0

抽象クラスを作成するときは、抽象化レベルの真ん中にいるからです。私は、クラスの責任についていくつか質問があること、またはこのクラスが何かをしなければならないことを意味しますが、部分的には方法を気にしません. メソッドを実装したくない場合は、インターフェイスを作成する必要があります。私の意見では、答えはクラスの責任と抽象化にあり、テクノロジーの範囲にはありません。

于 2015-10-15T21:39:29.830 に答える
0

abstractクラスが少なくとも 1 つの abstractメソッドを持っているため、Java コンテキストのクラスが定義されます。そして、抽象メソッドは実装されていないメソッドです。これは、まったく同じである c++ からコピーされたばかりの設計上の決定です。唯一の違いは、C++ では、クラスが抽象であることをコンパイラーに伝える必要がないことです。コンパイラーは、あなたが伝えなくてもそれを認識しています。この設計上の決定が c++ で行われた理由はわかりませんが、それを使用すると、完全なクラスのエラーが排除されます。メソッドがそのサブクラスに実装されていない場合に、クラスのメソッドが呼び出されるエラー。

于 2015-10-15T21:30:16.127 に答える