수색…
소개
다형성은 OOP (Object Oriented Programming) 의 기본 개념 중 하나입니다. 다형성의 주요 개념은 객체가 다른 형태를 취할 수 있다는 것입니다. 이를 달성하기 위해 (다형성), 우리는 크게 두 가지 접근 방식을 사용합니다.
메소드 오버로딩
- 이름이 같고 입력 매개 변수가 다른 두 개 이상의 메소드가있는 경우에 발생합니다. 반환 유형은 동일한 이름을 가진 모든 메소드에 대해 동일해야합니다.
메소드 재정의
- 자식 객체가 동일한 메소드 정의 (같은 이름의 같은 이름)를 사용하지만 구현이 다른 경우에 발생합니다.
이 두 가지 접근법을 사용하여 동일한 방법 / 기능을 사용하여 다르게 행동 할 수 있습니다. 다음 예제에서 이에 대한 자세한 내용을 살펴 보겠습니다.
메서드 오버로딩
메소드 오버로딩은 클래스 내에서 다형성을 사용하는 방법입니다. 우리는 동일한 클래스 내에서 여러 입력 매개 변수를 사용하여 둘 이상의 메소드를 가질 수 있습니다.
입력 매개 변수의 차이는 다음 중 하나 일 수 있습니다.
- 매개 변수의 수
- 매개 변수 유형 (데이터 유형)
- 매개 변수 순서
별도로 살펴 보도록하겠습니다. (자바에있는이 예제는 더 익숙합니다 - 죄송합니다) :
매개 변수의 수
public class Mathematics { public int add (int a, int b) { return (a + b); } public int add (int a, int b, int c) { return (a + b + c); } public int add (int a, int b, int c, int c) { return (a + b + c + d); } }- 당신은 메서드의 반환 형식이 동일 볼 수 있습니다,주의 깊게 봐
int하지만 입력 횟수가 다른 이러한 방법 theree. 이를 다른 수의 매개 변수로로드하는 메소드로 불립니다.추신 : 이것은 단지 예일 뿐이며, 이와 같은 추가 기능을 정의 할 필요가 없습니다.
매개 변수 유형
public class Mathematics { public void display (int a) { System.out.println("" + a); } public void display (double a) { System.out.println("" + a); } public void display (float a) { System.out.println("" + a); } }모든 메소드는 동일한 이름과 동일한 리턴 유형을 가지며 입력 데이터 유형이 다릅니다.
추신 : 이 예제는 단지 목적을 설명하기위한 것입니다.
매개 변수 순서
public class Mathematics { public void display (int a, double b) { System.out.println("Numbers are " + a + " and " + b); } public void display (double a, int b) { System.out.println("Numbers are " + a + " and " + b); } }추신 : 이 예제는 또한 목적을 설명하기위한 것입니다.
메서드 재정의
메소드 오버라이드는 클래스 간의 다형성을 사용하는 방법입니다. 하나의 클래스가 다른 클래스로부터 상속받은 경우, 이전 (하위 클래스)은 후자의 (수퍼 클래스) 메소드를 무시하고 구현을 변경할 수 있습니다.
이것은 수퍼 클래스가 메소드의보다 일반적인 구현을 정의하는 반면에 서브 클래스는 좀 더 구체적인 메소드를 사용하는 경우에 사용됩니다.
다음 예제를 고려하십시오.
포유류를위한 수업이 있습니다.
class Mammal {
void whoIam () {
System.out.println("I am a Mammal");
}
}
그 다음 우리는 포유류 인 개를위한 수업을 가지고 있습니다.
class Dog extends Mammal {
@Override
void whoIam () {
super.whoIam();
System.out.println("I am a Dog!");
}
}
이 예제에서는 Mammal 클래스에서 whoIam() 메서드를 정의합니다. 포유류가 포유류라고합니다. 그러나 이것은 많은 포유류가 있기 때문에 일반적인 용어입니다. 그런 다음 Dog Mammal 인 것처럼 Mammal 클래스에서 Dog 클래스를 상속받을 수 있습니다. 그러나 더 구체적으로 말하면 개는 포유류뿐만 아니라 개입니다. 그러므로 개는, I am a Mammal 이고 또한 I am a Dog 개라고해야합니다. 그러므로 하위 클래스 ( Dog 클래스)의 수퍼 클래스 ( Mammal 클래스, 즉)에서 whoIam() 메서드를 재정 의 할 수 있습니다.
Java에서 super.whoIam() 을 사용하여 수퍼 클래스의 메서드를 호출 할 수도 있습니다. 그러면 Dog 는 개처럼 행동하고 포유 동물처럼 행동합니다.