다형성 : 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질을 말한다.
자동차의 부품을 교환하면 성능이 다르듯이 객체는 부품과 같아 프로그램을 구성하는 객체를 바꾸면 프로그램의 실행 성능이 다르게 나올 수 있다.
객체 사용방법이 동일하다는 것은 동일한 메소드를 가지고 있다는 뜻이다. 아래 코드를 보면 한국 타이어와 금호 타이어는 모두 타이어를 상속한다. 두 타이어는 부모의 메서드를 동일하게 가지고 있다는 것이다.
두 타이어가 메서드를 오버라이딩하고 있다면 타이어 메서드 호출시 오버라이딩된 메서드가 호출된다.
오버라이딩 된 내용은 두 타이어가 다르기 때문에 실행결과가 다르게 나온다. 이를 다형성이라고 한다.
다형성 = 자동 타입 변환 + 메서드 오버라이딩
필드 다형성
- 필드 타입은 동일하지만 대입되는 객체가 달라져 실행 결과가 다양하게 나오는 것을 말한다.
package ch07.sec08.exam01;
public class Tire {
public void roll() {
System.out.println("회전한다");
}
}
package ch07.sec08.exam01;
public class HankookTire extends Tire{
@Override
public void roll() {
System.out.println("한국 타이어 회전");
}
}
package ch07.sec08.exam01;
public class KumhoTire extends Tire{
@Override
public void roll() {
System.out.println("금호 타이어 회전");
}
}
package ch07.sec08.exam01;
public class Car {
public Tire tire;
public void run() {
tire.roll();
}
}
package ch07.sec08.exam01;
public class CarExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
Car myCar = new Car();
myCar.tire = new Tire();
myCar.run();
myCar.tire = new HankookTire();
myCar.run();
myCar.tire = new KumhoTire();
myCar.run();
}
}
매개변수 다형성
다혀성은 필드보다는 메서드를 호출할때 발생한다.
메서드가 클래스 타입의 매개변수를 가지고 있을 경우, 호출할 때 동일한 타입의 객체를 제공하는 것이 정석이지만 자식 객체를 제공할 수 있다.
'자바' 카테고리의 다른 글
[JAVA] 컬렉션 자료구조 (List, Set) (0) | 2023.09.21 |
---|---|
[JAVA] 제네릭 (0) | 2023.09.20 |
[JAVA] 예외 처리 (0) | 2023.09.18 |
[JAVA] 상속 (0) | 2023.09.15 |
[JAVA] 변수와 메서드 2 (0) | 2023.09.12 |