자바의 Object 클래스
자바에서 모든 클래스는 Object 클래스를 상속을 받는다. 우리 눈에는 보이지 않지만 클래스가 `extends` 키워드로 명시적으로 상속을 받는 클래스가 없다면, Object 클래스를 상속을 받는다고 생각하면 된다.
public class MyClass {
// extends Object 가 생략되어 있음
}
이렇게 자바에서 기본으로 Object 클래스를 상속받는 이유는 다음 두가지를 제공하기 때문이다.
- 자바 객체가 공통적으로 갖춰야 할 기능(toString(), equals(), hashCode() 등)을 제공하기 위해 사용
- 다형성을 지원하기 위해 모든 클래스의 최상위 부모 클래스를 통일하기 위해 사용
공통 기능 제공
자바에서 Object 클래스는 모든 객체가 기본적으로 갖추어야 할 기능을 제공한다. 그렇기때문에 Object 클래스는 객체의 기본적인 메서드들을 포함하고 있다.
Object 클래스에는 equals, hashCode, toString 등의 메서드가 포함되어 있다. 이 메서드들은 객체를 관리하고 비교하는 데 필수적인 역할을 한다.
`toString()`은 객체의 정보를 제공하고, `equals()`는 두 객체의 동등성을 비교하는 데 사용이 된다. `hashCode()`는 객체의 해시 코드 값을 반환하는 데 사용되며, 이는 해시 기반의 자료구조에서 중요한 역할을 한다.
모든 객체가 앞서 설명한 메서드를 지원한다는 함에 따라 프로그래밍이 단순화되고, 일관성을 가질 수 있게 된다.
다형성의 기본 구현
`Object`클래스의 경우 모든 클래스의 부모 클래스이다. 이 지점을 활용해 다형성을 지원하는 기본적인 메커니즘을 제공하게 된다.
다형성 참조에 대해 간단히 보면, "부모는 자식을 담을 수 있다."를 기본 원칙으로 한다. 이는 모든 자바 객체는 `Object`타입으로 처리될 수 있으며, 이는 다양한 타입의 객체를 통합적으로 처리할 수 있게 해준다.
'Language > Java' 카테고리의 다른 글
[Java] 불변객체(Immutable Object) (0) | 2025.01.22 |
---|---|
[Java] 자바의 동등성과 동일성 (==, equals(), hashcode()) (0) | 2025.01.17 |
[Java] 자바의 메모리 구조와 Static (스택, 힙, 메서드 영역) (0) | 2025.01.10 |
[Java] 접근 제어자와 캡슐화 (0) | 2025.01.10 |
[Java] 생성자가 필요한 이유 (0) | 2025.01.09 |