Building value

Java[다형성(Polymorphism)] 본문

Java

Java[다형성(Polymorphism)]

developer_Michael 2023. 3. 23. 18:39
반응형

다형성(Polymorphism)은 객체 지향 프로그래밍에서 중요한 개념 중 하나입니다. 

 

다형성은 여러 가지 형태를 가질 수 있는 능력을 의미합니다. 

 

즉, 동일한 메서드를 다양한 방식으로 사용할 수 있는 능력입니다.

Java에서 다형성은 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해 구현됩니다.

 

오버로딩(Overloading)


오버로딩은 동일한 메서드 이름을 가지고 매개변수의 타입, 개수, 순서 등을 다르게 하여 

 

여러 개의 메서드를 정의하는 것을 의미합니다. 

 

오버로딩을 통해 동일한 기능을 하는 메서드를 다양한 방식으로 사용할 수 있습니다.

다음은 오버로딩의 예시입니다.

public class Calculator {
   public int add(int x, int y) {
      return x + y;
   }
   
   public double add(double x, double y) {
      return x + y;
   }
   
   public int add(int x, int y, int z) {
      return x + y + z;
   }
}

위 코드에서 Calculator 클래스는 add() 메서드를 오버로딩하여 정의합니다. 

 

첫 번째 add() 메서드는 int 타입의 매개변수를 두 개 받아 덧셈 연산을 수행하고, 

 

두 번째 add() 메서드는 double 타입의 매개변수를 두 개 받아 덧셈 연산을 수행합니다. 

 

세 번째 add() 메서드는 int 타입의 매개변수를 세 개 받아 덧셈 연산을 수행합니다.

 

 

오버라이딩(Overriding)


오버라이딩은 상속받은 메서드를 자식 클래스에서 재정의하여 사용하는 것을 의미합니다. 

 

즉, 부모 클래스에서 정의한 메서드를 자식 클래스에서 재정의하여 사용할 수 있습니다. 

 

오버라이딩을 통해 자식 클래스는 부모 클래스에서 상속받은 메서드를 필요에 따라 수정하거나 변경할 수 있습니다.

다음은 오버라이딩의 예시입니다.

public class Animal {
   public void move() {
      System.out.println("The animal is moving.");
   }
}

public class Dog extends Animal {
   @Override
   public void move() {
      System.out.println("The dog is running.");
   }
}

위 코드에서 Animal 클래스의 move() 메서드를 Dog 클래스에서 오버라이딩하여 사용합니다. 

 

이를 통해 Dog 클래스는 move() 메서드를 부모 클래스에서 상속받았지만, 

 

자신의 필요에 맞게 수정하여 사용할 수 있습니다.

Animal animal = new Animal();
Dog dog = new Dog();

animal.move();  // 출력 결과: The animal is moving.
dog.move();     // 출력 결과: The dog is running.

 

반응형

'Java' 카테고리의 다른 글

Java[추상화(Abstraction)]  (0) 2023.03.23
Java[캡슐화(Encapsulation)]  (0) 2023.03.23
Java[상속(Inheritance)]  (0) 2023.03.23
Java[객체.Object]  (0) 2023.03.23
Java[클래스.Class]  (0) 2023.03.23