자바에서 모든 클래스의 최상위 부모 클래스는 항상 Object
클래스이다
클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 Object
클래스를 상속 받는다
extends Object
코드를 넣어준다extends Object
는 생략하는 것을 권장package lang.object;
public class ObjectMain {
public static void main(String[] args) {
Child child = new Child();
child.childMethod();
child.parentMethod();
// toString()은 Object 클래스의 메서드
String string = child.toString();
System.out.println(string);
}
}
child.toString()
을 호출한다Child
에서 toString()
을 찾는다. 없으므로 부모 타입으로 올라가서 찾는다Parent
에서 찾는다. 없으므로 부모 타입으로 올라가서 찾는다.Object
에서 찾는다. Object
에 toString()
이 있으므로 이 메서드를 호출한다.자바에서 Object 클래스가 최상위 부모 클래스인 이유
Object
타입으로 처리될 수 있다Object
에 보관하면 된다.Object를 활용한 다형성의 한계
Object
는 모든 객체를 대상으로 다형적 참조를 할 수 있다
Object
는 모든 객체의 부모이므로 모든 객체를 담을 수 있다Object
를 통해 전달 받은 객체를 호출하려면 각 객체에 맞는 다운캐스팅 과정이 필요하다
Object
가 세상의 모든 메서드를 알고 있는 것이 아니다⇒ 다형성을 제대로 활용하려면 다형적 참조 + 메서드 오버라이딩을 함께 사용 해야 한다