2024. 4. 5. 20:45ㆍJAVA
Object Class
자바에서 모든 클래스의 최상위 class 이다.
Obejct - super - sub
Object Class 가 최상위 클래스인 이유
- 공통 기능 제공
- 다형성 기본 구현
1. 공통기능 제공
객체 정보 제공, 타 객체와의 비교, 인스턴스의 설계도(class) 확인 등은 모든 클래스에 필요한 기능이다.
이런 기능을 클래스를 마다 계속해서 만드는 것은 굉장히 비효율적인 행위이다.
따라서,
하나의 클래스(Object Class)에 모든 클래스가 필요로하는 기능을 구현하고,
다른 클래스들이 하나의 클래스(Object Class)의 기능을 상속하여 사용하도록하면 효율적인 사용이 가능하기 때문이다.
이를 통해 프로그래밍이 단순화되고 일관성을 갖게 된다.
2. 다형성 기본 구현
장점
Object 는 모든 클래스의 상위 클래스이다. 따라서, Obejct 타입은 모든 객체를 참조할 수 있다. (= 변수에 담을 수 있다.)
Dog dog = new Dog();
Book Book = new Book();
Obejct obj = dog;
Obejct obj = book;
한계점
위의 코드처럼 모든 타입의 인스턴스를 Object 타입에 담을 수 잇는 강점(=다형성 보장)이 있지만,
obj = dog;
obj.sound(); // 컴파일 에러
obj = book;
obj.log(); // 컴파일 에러
위와 같은 방식은 사용할 수 없다. Object 클래스에는 sound()도 log() 도 없기 때문이다.
따라서, dog의 sound(), book의 log()를 사용하기 위해선, 다운 캐스팅이 반드시 필요하다.
다형성을 제대로 활용하기 위해서는, 다형적 참조 + 메서드 오버라이딩을 함께 사용해야 한다.
그러나, 최상위 클래스인 Object를 사용해 다형적 참조를 사용할 경우, 오버라이딩을 할 수 없다.
즉, 객체지향의 꽃인 다형성을 십분발휘하기 어려워지는 한계점이 존재한다.
그럼 언제 쓸까? 여기부턴 추가적인 조사와 공부 필요.
Object 배열
Object는 모든 타입의 객체를 담을 수 있다. 따라서 Object[ ] 를 만들면 모든 객체를 담을 수 있다.
toString()
'JAVA' 카테고리의 다른 글
| String_String pool (0) | 2024.04.17 |
|---|---|
| Object OCP(Open Closed Principle) (0) | 2024.04.05 |
| java.lang (0) | 2024.04.04 |
| Generics_제약 (0) | 2024.03.21 |
| Generics_제한 (0) | 2024.03.21 |