본문 바로가기
Kosta DevOps 과정 280기/Java

다형성(polymarphism)

by 롯슈83 2024. 5. 20.

정의

  • 객체마다 받은 메세지는 동일한데 객체마다 동작하는 방식이 다른 것.
  • 상속 관계에 있을 때 부모로부터 물려받은 메소드를 자신에게 맞도록 재정의한 경우에 자식클래스의 객체마다 동작하는 방식이 다르다. 이것을 다형성이라고 한다.
package com.kosta.exam06;

public class EmployeeTest {

	public static void main(String[] args) {
		SalariedEmployee e1 = new SalariedEmployee("임유나", "Ai391", 1);
		SalariedEmployee e2 = new SalariedEmployee("라미나", "AA1", 2);
		HourlyEmployee hs = new HourlyEmployee("홍길동", "132AD", 200, 120000);
		System.out.println(e1);
		System.out.println(e2);
		System.out.println(hs);
		
		e1.computeSalary();		//A
		e2.computeSalary();		//B
		hs.computeSalary();

	}

}
  • 위의 실습코드에서 A, B에서 모두 동일한 메세지 computeSalary 를 주었는데 e1 호봉에 따라 기본금, 수당을 결정하고 기본금과 수당을 더해서 급여를 계산한다.
  • 그러나 h1을 시간당 임금과 일한 시간을 곱하기 하여 실수령액을 계산한다. 이와 같이 두 개의 객체가 동일한 메세지를 받았는 데 돌장하는 방식. 즉, 응답이 다를 때 이것을 다형성이라고 한다.