같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질.
자동타입변환
부모클래스변수 = 자식클래스타입
부모타입의 변수가 자식타입의 객체를 담을 수 있다. 단, 부모타입 내에 있는 멤버만 사용 가능하다.
다형성의 구현방법
부모 타입으로 자동 변환
재정의된 메소드
Parent p = new Child();
p.methodC(); // 재정의 된 메소드가 있으면 자식클래스의 메소드를 호출할 수 있다.
main에서 아래와 같이 매개변수로 리스트를 넘겨 줬을 경우
받는 쪽에서 ArrayList tireList; 이런 식으로 필드를 선언만 하고 생성자 부분에서 this.tireList = tireList; 와 같은 식으로 받으면 된다.
필드에서 ArrayList tireList = new ArrayList(); 이렇게 선언해 버리면 쓰지 않을 공간을 생성해 두었다가 변경하는 낭비가 발생한다.
ArrayList<Tire> tireList = new ArrayList<Tire>();
tireList.add(new HankookTire("앞왼쪽", 6));
tireList.add(new HankookTire("앞오른쪽", 2));
tireList.add(new KumhoTire("뒤왼쪽", 3));
tireList.add(new KumhoTire("뒤오른쪽", 10));
Car car = new Car(tireList);
코드표화
//전체 변경이 없을 고정된 값
//특정 상태나 흐름을 나타내는 기준 값, 기준 코드 값
//값이 변경되었을 경우 일일히 찾아다니며 바꾸지 않아도 된다. 알아보기도 쉬움