본문 바로가기

자바

[JAVA] 다형성

다형성 : 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질을 말한다.

자동차의 부품을 교환하면 성능이 다르듯이 객체는 부품과 같아 프로그램을 구성하는 객체를 바꾸면 프로그램의 실행 성능이 다르게 나올 수 있다.

 

객체 사용방법이 동일하다는 것은 동일한 메소드를 가지고 있다는 뜻이다. 아래 코드를 보면 한국 타이어와 금호 타이어는 모두 타이어를 상속한다. 두 타이어는 부모의 메서드를 동일하게 가지고 있다는 것이다.

두 타이어가 메서드를 오버라이딩하고 있다면 타이어 메서드 호출시 오버라이딩된 메서드가 호출된다.

오버라이딩 된 내용은 두 타이어가 다르기 때문에 실행결과가 다르게 나온다. 이를 다형성이라고 한다.

 

다형성 = 자동 타입 변환 + 메서드 오버라이딩

 

 

필드 다형성 

- 필드 타입은 동일하지만 대입되는 객체가 달라져 실행 결과가 다양하게 나오는 것을 말한다.

 

 

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