2016-06-21 2 views
-5
class Person { 
    public Person(){} 
} 
class Employee extends Person{ 
    public Employee() {} 
} 
class Manager extends Employee{ 
    public Manager() {} 
} 
public class HeapObjectTest { 
    public static void main(String[] args) { 
     Manager manager = new Manager();} 
} 

上記のヒープ上にいくつのオブジェクトが作成されますか?ヒープ上でのオブジェクトの作成

+10

JVMはmain()メソッドに近づくにつれ約10,000個のオブジェクトを作成しますが、もう1つはそれほど大きな違いはありません。注:初めてクラスを読み込むと、たくさんのオブジェクトが作成されます。 –

+1

[Javaでのオブジェクト作成ロジック]の複製があります(http://stackoverflow.com/questions/26115207/object-creation-logic-in-java) – sauumum

+2

これは宿題に関する質問ですね。あなたはヒープを忘れるべきです、それは完全な赤ちゃんです。継承の仕組みについて考えてみてください。 – biziclop

答えて

1

あなたのコードについてのみ話すと、one Manager objectしかありません。オブジェクトクラスまではコンストラクタチェーンがあります。このオブジェクトとは別に、JVMがプログラムを実行するために必要なオブジェクトもあります。これらは現在、プログラムを実行するために現在ロードされているclass objects, method objectsになります。任意のプログラムの実行順序の詳細については

、より多くの理解を得るために、一度リンクの下のコード行を呼び出す

https://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.1.1

0

をお読みください:

Manager manager = new Manager(); 

が作成されます。一方オブジェクトManagerクラスのインスタンスです。 Managerクラスの実装は、EmployeeクラスとPersonクラスの実装から借りていますが、これらのクラスを継承しているからといって、別々のオブジェクトとして扱われるわけではありません。

0

あなたのプログラムは、マネージャクラス用に1つのオブジェクトしか作成しません。 ManagerクラスはEmployeeとPersonのプロパティ/動作を拡張しますが、Managerのみのオブジェクトを作成し、他のオブジェクトは作成しません。

オブジェクトの基本的な定義として、それはクラスのインスタンスであり、クラスはオブジェクトの作成方法に関する青い印刷です。お役に立てれば。

関連する問題