자바의 다형성(polymorphism) 구현
객체지향 언어의 주요 개념인 다형성(polymorphism)을 구현하는 예제로는 오버로딩과 오버라이딩을 들수 있습니다.
오버로딩(overloading)
같은 클래스 내에서 같은 이름의 생성자나 메소드를 사용하는 행위를 의미합니다.
생성자나 메소드에서 사용하는 매개변수의 개수와 타입이 서로 달라야 합니다.
오버라이딩(overriding)
상속관계에 있는 클래스들 간에 같은 이름의 메소드를 정의하는 행위를 의미합니다.
자식 클래스에서는 상속받은 부모 클래스의 메소드 구현 부분만 약간 변화시켜서 새로운 클래스를 생성할 수 있습니다.
매개변수의 개수와 타입이 같아야 합니다.
다형성(polymorphism) 예제
오버로딩으로 설계된 다형성의 예제는 다음과 같습니다.
같은 클래스내에 다양하게 설계된 check( ) 메소드를 다형성의 개념으로 설명할 수 있습니다.
class OverloadingP {
void check( ) {
System.out.println("매개변수가 없음");
}
void check(int a, int b) {
System.out.println("매개변수 int " + a + "와 int " + b);
}
void check(double a) {
System.out.println("매개변수 double " + a);
}
}
public class polymorphismTest1 {
public static void main(String[] args) {
OverloadingP po = new OverloadingP();
int i = 35;
po.check( ); // 인자가 없는 check 메소드가 실행됨
po.check(15, 28); // 인자가 2개인 check 메소드가 실행됨
po.check(77.8); // 인자가 1개인 check 메소드가 실행됨
po.check(i); /* 인자가 1개인 check 메소드는 double형으로 데이터를 받으므로 자동형변환을 거쳐
void check(double a)를 실행함 */
}
}
오버라이딩으로 설계된 다형성(polymorphism)의 예제는 다음과 같습니다.
오버라이딩(overriding)을 통한 다형성(polymorphism)은 상속 관계에 있는 클래스간의 호환성을 높여줍니다.
'자바' 카테고리의 다른 글
자바 산술 연산자와 관계 연산자 (0) | 2021.11.20 |
---|---|
Boolean 데이터 타입 (0) | 2021.11.16 |
상속과 생성자 (0) | 2021.11.14 |
자바 오버로딩(Overloading), this , super (0) | 2021.11.12 |
자바 오버라이드(Override) (0) | 2021.11.10 |
댓글