Object 클래스
자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object 클래스이다. 부모를 상속받으려면 'extends'를 명시적으로 붙여 상속을 받아야 한다. 그러나 Object 클래스는 'extends'를 붙이지 않아도 상속된다. 즉 부모가 없으면 묵시적으로 Object 클래스를 상속받는다.
Object 클래스가 최상위 부모 클래스인 이유는 다음과 같다.
- 공통 기능 제공
- 객체의 정보를 제공하는 toString()
- 객체의 같음을 비교하는 equals()
- 객체의 클래스 정보를 제공하는 getClass()
- 기타 여러가지 기능
- 다형성의 기본 구현
Object 다형성의 장점
- 어떤 객체든지 인자로 전달할 수 있다는 장점이 있다.
한계
- Object는 모든 객체를 대상으로 다형적 참조를 할 수 있다.
- Object를 통해 전달 받은 객체를 호출하려면 각 객체에 맞는 다운캐스팅 과정이 필요하다.
※ 다형적 참조는 가능하지만, 메서드 오버라이딩이 안되기 때문에 다형성을 활용하기에는 한계가 있다. 그렇다면 Object를 언제 활용하면 좋을지 다음을 알아보자.
1. Object 배열
Object는 모든 타입의 객체를 담을 수 있다. 따라서 Object[]을 만들면 세상의 모든 객체를 담을 수 있는 배열을 만들 수 있다.
예시
package lang.object.poly;
public class ObjectPolyExample2 {
public static void main(String[] args) {
Dog dog = new Dog();
Car car = new Car();
Object object = new Object(); //Object 인스턴스도 만들 수 있다.
Object[] objects = {dog, car, object};
size(objects);
}
private static void size(Object[] objects) {
System.out.println("전달된 객체의 수는 : " + objects.length);
}
}
실행 결과
전달된 객체의 수는: 3
2. toString()
Object.toString() 메서드는 객체의 정보를 문자열 형태로 제공한다. 그래서 디버깅과 로깅에 유용하게 사용된다.
예시
package lang.object.tostring;
public class ToStringMain1 {
public static void main(String[] args) {
Object object = new Object();
String string = object.toString();
//toString() 반환값 출력
System.out.println(string);
//object 직접 출력
System.out.println(object);
}
}
실행 결과
java.lang.Object@a09ee92
java.lang.Object@a09ee92
Object 가 제공하는 toString() 메서드는 기본적으로 패키지를 포함한 객체의 이름과 객체의 참조값(해시 코드)를 16진수로 제공한다.
'자바 > 자바 중급' 카테고리의 다른 글
[자바 중급] 06. 날짜와 시간 (1) | 2024.10.09 |
---|---|
[자바 중급] 05. 열거형 Enum (0) | 2024.10.08 |
[자바 중급] 04. Wrapper class (2) | 2024.09.30 |
[자바 중급] 03. String 클래스 (0) | 2024.09.29 |
[자바 중급] 02. 불변 객체 (0) | 2024.09.28 |