자바에서 모든 클래스의 최상위 부모 클래스는 Object 클래스이다.
부모가 없을 경우 묵시적으로 Object 클래스를 상속받는다. ( extends Object 가 있는 것과 같다. )
묵시적 ( Implicit ) : 개발자가 직접 기술하지 않아도 시스템 또는 컴파일러에 의해 자동으로 수행되는 것을 의
명시적 ( Explicit ) : 개발자가 직접 기술해서 작동하는 것을 의미
자바에서 Object 클래스가 최상위 부모 클래스인 이유
- 공통 기능 제공
- 객체의 정보를 제공하고, 이 객체가 다른 객체와 같은지 비교하고, 객체가 어떤 클래스로 만들어졌는지 확인하는 기능은 모든 객체에게 필요한 기능이다. 이렇게 모든 객체에 필요한 공통 기능을 제공하여 모든 객체에서 해당 기능을 상속받아 사용할 수 있다.
- 객체의 정보를 제공하는 toString( )
- 객체의 같음을 비교하는 equals( )
- 객체의 클래스 정보를 제공하는 getClass( )
- 기타
- 객체의 정보를 제공하고, 이 객체가 다른 객체와 같은지 비교하고, 객체가 어떤 클래스로 만들어졌는지 확인하는 기능은 모든 객체에게 필요한 기능이다. 이렇게 모든 객체에 필요한 공통 기능을 제공하여 모든 객체에서 해당 기능을 상속받아 사용할 수 있다.
- 다형성의 기본 구현
- Object는 모든 클래스의 부모 클래스로 모든 객체를 참조할 수 ( 다 담을 수 ) 있다.
- 타입이 다른 객체들을 어딘가에 보관해야 한다면 Object 클래스에 보관할 수 있다.
Object 다형성
Object는 모든 객체의 부모이므로 어떤 객체든지 다 담을 수 있다. Object를 통해 전달받은 객체를 호출하려면 각 객체에 맞는 다운캐스팅 과정이 필요하다.
다형성을 제대로 활용하기 위해서는 다형적 참조와 메서드 오버라이딩을 함께 사용해야 한다.
Object는 하위 클래스의 메서드가 정의되어 있지 않기 때문에 메서드 오버라이딩을 활용할 수 없으므로 각 객체의 기능을 호출하려면 다운 캐스팅을 해야 한다. 따라서 다형성을 활용하기에 Object에는 한계가 있다.
Object 배열
Object 타입을 사용하여 모든 객체를 담을 수 있는 배열을 만들 수 있다.
size( ) 메서드는 배열에 담긴 객체의 수를 세는 역할을 한다.
private static void size(Object[] objects) {
System.out.println("전달된 객체의 수는 : " + objects.length);
}
Object 타입의 배열은 모든 객체를 다 담을 수 있으므로 새로운 클래스가 추가되거나 변경되어도 이 메서드를 수정하지 않아도 된다.
공부 내용: [인프런] 김영한의 실전 자바 - 중급 1편
'Java' 카테고리의 다른 글
[인프런] equals( ) (0) | 2024.06.02 |
---|---|
[인프런] toString( ) (0) | 2024.06.02 |
[인프런] java.lang 패키지 (0) | 2024.06.02 |
[인프런] 객체 지향 (0) | 2024.05.28 |
[인프런] 인터페이스 (0) | 2024.05.28 |