2013-08-12 2 views
0

우리 프로그램에서 클래스를 하나도 갖지 않고 클래스를 확장하지 않으면. 예를 들어생성자에서 super() 사용

public class Point { 
    int x, y; 
} 

컴파일러는 기본 생성자를 생성하고 초() 메소드는이 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.9

public class Point { 
    int x, y; 
    public Point() { 
    super(); 
    } 
} 

Q 주문에 따라 호출 나 슈퍼 알기(); 수퍼 클래스의 기본 생성자를 호출하지만이 경우에는 수퍼 클래스가 없으므로이 경우 super()는 무엇입니까?

+4

모든 클래스는 Object 클래스를 확장하므로 슈퍼 클래스가 있습니다. –

+8

Chuck Norris를 연장 한 객체를 제외하고 –

+2

오 하느님 .. 사람들은이 기본 질문에 답하기에 너무 바쁩니다. 그들은 심지어 TYPOS를 돌보지도 않습니다 : P – exexzian

답변

5

모든 자바 클래스는 모든 자바 객체 당신은 슈퍼 클래스가 않습니다

1

기본 생성자가 Object이다에서 확장 할 수 있습니다. Java의 모든 클래스는 사용자가 지정했는지 여부에 관계없이 java.lang.Object를 자동으로 확장합니다.

는 여기를 참조하십시오 : http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html

은 해당 링크에서 한 조각을 촬영하려면 :

모든 클래스는 하나 이상의 생성자가 있습니다. 클래스에 이 명시 적으로 any를 선언하지 않으면 Java 컴파일러는 기본 생성자라고하는 인수가없는 생성자 을 자동으로 제공합니다. 이 기본 생성자는 클래스 부모의 인수가없는 생성자를 호출하거나 클래스에 다른 부모가없는 경우 Object 생성자를 호출합니다. 부모가 생성자가 없으면 (Object에는 1이 있습니다) 컴파일러는 프로그램을 거부합니다.

+0

이제는 분명합니다. 하지만 Object 클래스의 기본 생성자는 무엇입니까? 죄송합니다 maby는 바보 같은 질문입니다 ... – user16401

+0

그것은 JVM에 의해 처리됩니다, 나는 주로 메모리 할당을 할 것 같아요. – NiziL

4

에서 상속 Object

+0

이해하십시오. 그러나 Object 클래스의 생성자는 무엇을 목적으로합니까? 이 질문에 의미가 있습니까?:) – user16401

+0

오브젝트를 생성합니다 (직접 생성자를 제공하여 생성자를 오버라이드하지 않은 경우). –

+0

'Object'에 대한 Java 생성자는 실제로 아무 것도 할 일이 없지만 생성자 트리의 루트 역할을합니다. JVM 구현자는 해당 생성자가 특정 생성자 체인의 끝임을 알고 있습니다. 덧붙여서, 보통'Object'는 잠금 객체와 같은 목적을 위해 때때로 사용됩니다. – chrylis

0

모든 클래스에는 수퍼 클래스가 있습니다. 아무 것도 명시 적으로 지정되지 않은 경우 Object

0

모든 Java 클래스가 개체에서 확장되므로 어떤 클래스도 확장하지 않으면 super에 의해 Object 클래스의 생성자가 호출됩니다.

0

Object은 모두 java의 수퍼 유형입니다. Super()Object 클래스로 호출됩니다.

+2

@ suureshatta : 충분한 문자를 바꾸지 못했다고 말해 줬어. 하나 이상의 인스턴스를 편집해야합니다. –

0

Java의 각 클래스는 암시 적으로 객체 클래스를 확장합니다. 따라서 모든 클래스의 생성자에서 항상 super()를 호출 할 수 있습니다.

다시 Object 클래스에는 명시 적 생성자가 없습니다. 컴파일러가 기본 클래스를 만들고 Object 클래스의 기본 생성자는 객체을 만듭니다.

관련 문제