Javaにベースクラスとサブクラスがあり、サブクラスをインスタンス化すると、1つのインスタンスまたは2つのインスタンスを取得しますか?2つのオブジェクトを取得した場合、インスタンスはいくつ取得されますか?1つのインスタンスがベースクラスとサブクラスの2つのオブジェクトを保持しますか、それとも2つの別々のインスタンスを保持しますか?
6 に答える
サブクラスをインスタンス化すると、1つのオブジェクト/インスタンスのみが取得されます。この単一のインスタンスには、サブクラスのすべてのフィールド(親クラスによって定義されたフィールドが含まれます)が含まれます。
サブクラスとは、既存の親から派生した新しいクラスを定義していることを意味することを忘れないでください。つまり、それらの定義を継承します。したがって、親がと呼ばれるフィールドを宣言するとid
、サブクラスにもと呼ばれるフィールドid
が含まれるため、そのサブクラスのインスタンス化にはid
フィールドが含まれます。このフィールドは親クラスで宣言されていますが、サブクラスに属しています。
サブクラスをインスタンス化する場合、親のインスタンス化はありません。ランタイムクラスが親クラスであるオブジェクトは存在しません。
(質問の「オブジェクト」と「インスタンス」の違いがわかりません。異なることを意味する方法で使用しましたが、通常はまったく同じ意味です。オブジェクトはインスタンスです。特定のクラスの。)
ベースクラスとサブクラスの2つのクラスの単一インスタンスを取得します。
この例でそれを理解してみてください。クラスMammalとクラスHumanがあります。あなたはそれらの両方に属しています-それにもかかわらず、あなた自身の単一のインスタンスがあります。部屋に2人いる場合、両方のクラスのインスタンスが2つあります。
インスタンス==オブジェクト...両方とも同じで、2つの異なる名前だけです。1つのオブジェクト(おそらくサブクラス)を作成すると、1つのオブジェクトが得られます。
では、インスタンスとオブジェクトの論理的な違いは何ですか?
これらの単語を使用している状況では、違いはありません。(クラスの)インスタンスはオブジェクトであり、その逆も同様です。
ただし、より広い文脈では、(タイプの)インスタンスは必ずしもオブジェクトではなく、タイプによって異なります。たとえば、それは42
そのタイプの「インスタンス」であると言えますint
。
Javaにベースクラスとサブクラスがあり、サブクラスをインスタンス化すると、1つのインスタンスまたは2つのインスタンスを取得しますか?
各Javaクラスインスタンスが単一のオブジェクトに含まれているため、1つのインスタンスを取得します。
2つのオブジェクトを取得した場合、インスタンスはいくつ取得されますか?
「インスタンス」という用語は、オブジェクトと同義です。1つのインスタンスを言うことは、1つのオブジェクトを言う別の方法です。
1つのインスタンスがベースクラスとサブクラスの2つのオブジェクトを保持しますか、それとも2つの別々のインスタンスを保持しますか?
いいえ。Javaコンパイラは、ベースと拡張の両方の機能を含むクラスバイトコードを作成するため、そのクラスをインスタンス化すると、単一のオブジェクトになります。
new classA(); //Here you create an instance of a class
classA ob //create object named "ob" and datatype "classA"
そして今、インスタンスをオブジェクトに割り当てます
classA ob = new classA();
お気に入り
int num = 10