Java에서 동적 다형성과 정적 다형성 구별
Java를 사용한 객체 지향 프로그래밍에서는 동적 다형성과 정적 다형성의 차이점을 이해하는 것이 중요합니다. 이 문서에서는 이 개념을 설명하기 위해 간단한 설명과 예제를 제공합니다.
동적 다형성 대 정적 다형성
다형성을 사용하면 단일 메소드 이름이 대상에 따라 여러 구현을 가질 수 있습니다. 그것을 호출하는 객체 유형. 다형성에는 두 가지 기본 유형이 있습니다.
메서드 오버로딩
메서드 오버로딩은 정적 다형성의 한 형태입니다. 동일한 이름을 가진 메소드가 동일한 클래스에 존재하지만 매개변수가 다릅니다. 오버로드된 메서드를 호출할 때 Java는 전달된 인수의 수와 유형을 기반으로 호출할 적절한 메서드를 결정합니다.
코드 예(메소드 오버로딩):
class Calculation {
void sum(int a, int b) { System.out.println(a b); }
void sum(int a, int b, int c) { System.out.println(a b c); }
public static void main(String[] args) {
Calculation obj = new Calculation();
obj.sum(10, 10, 10); // Output: 30
obj.sum(20, 20); // Output: 40
}
}
메서드 재정의
메서드 재정의는 동일한 이름과 서명을 가진 메서드가 다른 클래스에 선언되었지만 공통 상위 클래스를 공유하는 동적 다형성의 한 형태입니다. 재정의된 메서드를 호출할 때 Java는 런타임 시 객체의 실제 클래스를 기반으로 호출할 메서드를 결정합니다.
코드 예(메소드 재정의):
class Animal {
public void move() {
System.out.println("Animals can move");
}
}
class Dog extends Animal {
public void move() {
System.out.println("Dogs can walk and run");
}
}
public class TestDog {
public static void main(String[] args) {
Animal a = new Animal(); // Animal reference and object
Animal b = new Dog(); // Animal reference but Dog object
a.move(); // Output: Animals can move
b.move(); // Output: Dogs can walk and run
}
}
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3