다형성
다형성은 이름 그래도 다양한 형태,여러 형태를 뜻한다.
프로그래밍에서는 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻한다. 보통 하나의 객체는 하나의 타입으로 고정되어 있다. 그런데 다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻이다.
핵심은 하나의 객체가 다양한 타입을 가질 수 있다는 것!
다형성의 이해
다형성을 이해하기 위해서는 크게 2가지 핵심 이론을 알아야함
다형적 = 하나가 아니고 여러개라고 이해하면 됨
다형적 참조란 여러개를 참조할 수 있다는 뜻
왜냐하면 객체를 생성하면 해당 타입의 상위 부모 타입은 모두 함께 생성되기 때문이다. 따라서 업캐스팅은 메모리 상에 인스턴스가 모두 존재하기 때문에 항상 안전하다. 따라서 캐스팅을 생략할 수 있다.
프로그램 시작 전 오류 : 컴파일
프로그램 실행 중 발생한 오류 : 런타임 오류
instance of
참조하는 대상이 어떤 인스턴스를 참조하고 있는지 확인하려는 방법이다.
즉, 다운캐스팅을 시작하기 전 어떤 인스턴스인지 확인하는 것이다.
부모는 자식을 담을 수 있지만
부모 intanseOf 자식
자식은 부모를 담을 수 없다
자식 instanseof 부모
메서드 오버라딩
다형성을 이루는 중요한 핵심 이론은 오버라이딩
메서드 오버라이딩에서 꼭 기억해야 할 점은 오버라이딩 된 메서드가 항상 우선권을 가진다는 점이다.
기존 기능을 하위 타입에서 새로운 기능으로 재정의 한다는 것이다.