다형성; polymorphism; 폴리모피즘
- poly-(많다)는 뜻의 접두어와 morphism(형태)
- 폴리모피즘은 객체지향 프로그래밍 언어에서 "오버로딩 (overloading)", "오버라이딩 (overriding)"의 형태로 나타난다.
- 같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질로서 다양한 기능 이용할 수 있음
- 다형성을 위해 부모 클래스 인터페이스의 타입 변환을 허용한다. 부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있다.
- 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것; 많이 싣을 수 있다!
- 하나의 메소드 이름으로 여러 기능을 담는다
- 매개 변수의 타입, 개수, 순서가 달라야 한다!
public void plus(int x, int y){
int result = x + y;
return result;
}
public void plus(double x, double y){
double result = x + y;
return result;
}
부모 클래스의 모든 메소드가 자식 클래스가 사용하기에 부적합한 경우 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 한다. 자바는 이런 경우에서 오버라이딩(overriding) 기능을 제공한다.
- 자식 클래스에서 동일한 메소드를 재정의하는 것
- 메소드가 오버라이딩되었다면 부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드를 호출하면 오버라이딩된 자식 메소드가 호출된다.
overriding 규칙