2012-12-01 2 views
0
public class B extends A{ 

    // code goes here 
} 

public class C extends B{ 
    public void method1(){ 
     C c = new C(); 
    } 
} 

C는 B를 확장하고 B는 차례대로 A를 확장하므로 객체 C를 만들 때 JVM에서 몇 개의 객체가 만들어 지는지 확인합니다.JVM에서의 객체 생성

+6

이 주제에 대해 연구 했습니까? –

+2

다른 클래스를 확장하는 클래스의 객체에는 부모 클래스의 객체가 필요하지 않습니다. 클래스를 템플릿으로 사용하고 클래스에서 하나의 객체 만 만듭니다. –

+0

부모 클래스에서 일부 변수에 액세스하려는 경우 – bhalkian

답변

1

하나의 개체가 직접 생성됩니다. 초기화 식이나 생성자 코드가 "new"를 사용하여 다른 객체를 만들 수 있기 때문에 "직접"이라고 말합니다.

하나의 C 개체를 생성하면 네 개의 생성자 호출이 발생합니다. C의 생성자 본문 바로 전에 B 생성자에 대한 명시 적 또는 암시 적 호출이 있습니다. 마찬가지로, B의 생성자는 Object 생성자를 호출하는 A 생성자를 호출합니다.

오브젝트는 C이고 B이고 A이며 오브젝트이며 프로세스의 끝까지 각각의 오브젝트로 초기화됩니다.

이 프로세스에 대한 자세한 내용은 the JLS을 참조하십시오.

2

하나, C 유형. 당신은 B와 A로부터 상속 기능을 사용할 수 있도록, 여기에 무언가를 추가하려고하는

1

대답은 1. 전화 new C()입니다 ... 긴 30 개 문자 이상의 답을하기 위해는, 참으로 자신을 A를 확장 B를 확장 한 객체를 생성