다형성은 가장 중요한 OOP 개념 중 하나입니다. 그것은 우리가 여러 가지 방법으로 단일 작업을 수행할 수 있는 개념입니다. 다형성에는 두 가지 유형이 있습니다. 하나는 컴파일 시간 다형성이고 다른 하나는 런타임 다형성입니다.
메소드 오버로딩은 컴파일 타임 다형성의 예이고 메소드 오버라이드는 런타임 다형성의 예입니다.
| Sr. 아니요. | 키 | 컴파일 타임 다형성 | 런타임 다형성 |
|---|---|---|---|
| 1 | 기본 | 컴파일 시간 다형성은 컴파일 시간에 바인딩이 발생함을 의미합니다. | 런타임에 어떤 메소드가 호출할지 알게 된 런타임 다형성 |
| 2 | 정적/동적 제본 | 정적 바인딩을 통해 달성할 수 있습니다. | 동적 바인딩을 통해 달성할 수 있습니다. |
| 4. | 상속 | 상속이 관련되지 않음 | 상속이 관련됨 |
| 5 | 예시 | 메서드 오버로딩은 컴파일 시간 다형성의 예입니다. | 메서드 재정의는 런타임 다형성의 예입니다. |
컴파일 타임 다형성의 예
public class Main {
public static void main(String args[]) {
CompileTimePloymorphismExample obj = new CompileTimePloymorphismExample();
obj.display();
obj.display("Polymorphism");
}
}
class CompileTimePloymorphismExample {
void display() {
System.out.println("In Display without parameter");
}
void display(String value) {
System.out.println("In Display with parameter" + value);
}
} 런타임 다형성의 예
public class Main {
public static void main(String args[]) {
RunTimePolymorphismParentClassExample obj = new RunTimePolymorphismSubClassExample();
obj.display();
}
}
class RunTimePolymorphismParentClassExample {
public void display() {
System.out.println("Overridden Method");
}
}
public class RunTimePolymorphismSubClassExample extends RunTimePolymorphismParentExample {
public void display() {
System.out.println("Overriding Method");
}
}