2013-03-07 3 views
0

나는 그물을보고 코드 예제를 찾고 이해하려고 노력하고 있습니다. 이 사람은 슈퍼가 아무것도하지 않는다고 믿습니다. eclipe에서는 Object 클래스에서 온다고 알려줍니다. 자바에서는 튜토리얼이있다.만약 슈퍼 히어로가 있다면 누군가가 설명 할 수 있습니까?

나는 "ListAdapter"로 "ArrayAdapter"로 객체를 만드는 Me와 "ListFragment"를 사용하는 안드로이드 4 열기 템플릿 사이의 연결을 배우려고하고 있으므로 내가 믿지 않을지라도 믿지 않을 것입니다. "마스터 세부 사항"선택을 위해 페이지에 목록을 추가하는 방법을 배우는 것이 좋습니다.

링크 Java tutorial :: Android doc :: ArrayAdapter tutorial

는 난 그냥 배를 놓친 것 같아요. 그렇게하지 않으면, 컴파일러는 당신을 위해이 명령을 삽입하기 때문에 생성자에 super()를 호출

public class Weather { 
public int icon; 
public String title; 

public Weather(){ 
    super(); 
} 

public Weather(int icon, String title) { 
    super(); 
    this.icon = icon; 
    this.title = title; 
} 
} 
+1

'super()'는 클래스 부모에서 같은 메소드를 호출합니다. 만약 당신의 클래스가 객체로부터 내려온다면, 생성자에서'super()'를 호출하는 것은 아무 것도하지 않을 것입니다. 왜냐하면 객체의 생성자는 아무 것도하지 않기 때문입니다. 그러나 메소드 오버라이드에도 불구하고 수퍼 클래스의 일부 동작을 상속 받기를 원한다면 매우 유용합니다. – Patashu

+1

'super()'는 수퍼 클래스 생성자를 호출한다. 'Object'가 수퍼 클래스 인 경우 효과적으로 * nothing *을 수행합니다. 일부 IDE는 기본적으로 그것을 삽입하는 것을 좋아합니다. 아마도 그 이유 일 것입니다. –

답변

6

은 결코 필요하다.

그래서

public Foo() { 
    // some instructions 
} 

public Foo() { 
    super(); 
    // some instructions 
} 

엄격하게 동일합니다. 생성자가해야 할 첫 번째 작업은 수퍼 클래스 생성자 중 하나를 호출하는 것입니다. 그것을 잊어 버린 경우, 컴파일러는 super() 호출을 삽입하여이를 수행합니다. 그리고 수퍼 클래스에 arg가없는 생성자가없는 경우 컴파일 오류가 발생합니다.

no-arg 생성자가 아닌 기본 클래스의 생성자를 호출하려면 (또는 필요로 할 때) 종종 super(someArguments)을 호출해야합니다.

+0

또한 생성자가 전혀없는 것은 두 예제와 완전히 동일합니다. – ddmps

+0

^당신이 (또는 다른 누군가) 나중에 인수를 취하는 생성자를 구현하는 경우 기본 생성자가 없다는 오류를 방지하기 위해 항상 처음부터 다시 넣는 것이 더 안전합니다. –

0

super()가 아무 것도하지 않는다고 말하는 것은 맞지 않습니다. 수퍼 클래스의 인수없는 생성자를 호출합니다. 클래스가 java.lang.Object에서 직접 상속 받더라도 아무 것도하지 않지만 Object의 생성자가 호출됩니다. 물론 JVM 옵티마이 저는 이러한 쓸데없는 호출을 빠르게 제거 할 것입니다.

관련 문제