2012-03-14 1 views
2

이상한 (어쩌면 어리석은) 질문이 있습니다. 궁금 해서요. "Java"Object 클래스가 "Class"가 아닌 "Object"클래스 인 이유는 무엇입니까?Java의 "최상위"수퍼 클래스가 "객체"라고하는 이유는 무엇입니까?

예를 들어, ArrayList에 대한 갔지 다음과 같은 계층 구조를 가지고

Object -> 
Collection -> 
List -> 
ArrayList 

확인 : ArrayList를이 목록은 ... 목록 컬렉션입니다 ...하지만 컬렉션 (모든 컬렉션의 클래스)는 아니다 Object ... 클래스입니다!

+0

모든 개체의 기본 수퍼 클래스는 Object입니다. 수퍼 클래스가없는 클래스를 선언하면 수퍼 클래스는 Object입니다. –

+0

정말 개체의 수퍼 클래스를 가질 수는 없습니까? 클래스 만이 수퍼 클래스를 가져야합니다. – drozzy

답변

11

개체 자체가 무엇인지 생각해보십시오. ArrayList은 목록입니다. 그렇습니까? 그것은 또한 대상입니다. 이 아니며 개체 클래스입니다. 클래스 이름은 해당 클래스의 인스턴스이 무엇을 나타내는 지 설명합니다. 이 모음(그리고 그것은 개체의) -

모음는 컬렉션의 클래스가 아닙니다. 당신이 예를 컬렉션의를 선언 Collection를 사용할 때

+2

또한 목록이나 컬렉션이 모두 인터페이스가 아닌 클래스입니다. – twain249

+1

다음 구절 : "클래스 이름은 해당 클래스의 인스턴스를 나타냅니다." 내 질문에 대답했다. 감사! – Salles

3

글쎄, 당신은 인스턴스 A의 (더 나은 지정되지 않음) 개체 같은 선언 Object를 사용합니다.

당신은 그것의 예를가 인터페이스 (클래스의 효과적으로 특수한 유형) 개체

1

Collection의 클래스입니다 나타냅니다 java.lang.Class<T>으로도 Class 형의 객체를 선언 할 수 있습니다.

Collection은 개체입니다.

+0

제 질문은 objec 대신 Class를 사용하는 것이 좋습니다 : Collection의 인스턴스는 Object입니다. 그러나 Class (또는 인터페이스) Collection은 Object가 아닙니다 ... 클래스 " – Salles

+0

@Sales Object는 모든 객체의 클래스입니다. 컬렉션은 모든 컬렉션의 클래스입니다. –

1

귀하의 가정이 잘못되었습니다. ArrayList에 대한 올바른 관계의 계층은 다음과 같습니다
ArrayList를 -> AbstractList를 -> AbstractCollection의 -

그래서 심지어 ArrayList를이 계층 구조에서 우선으로 오브젝트있다> 개체입니다.

관련 문제