티스토리 뷰

다형성을 사용하면 객체를 실제 클래스가 아닌 부모 클래스의 인스턴스로 취급할 수 있다. 이를 통해 객체의 런타임 유형에 따라 실행되는 메서드가 달라지는 유연성과 동적 메서드 디스패치를 지원한다.

 

  • Core Principles
    • Dynamic Binding
      : 다형성을 사용하면 런타임에 실제 객체 유형에 따라 실행되는 메서드가 결정되는 지연 바인딩이 가능하다.
    • Interfaces and Abstract Classes
      : 인터페이스와 추상 클래스는 다형성을 허용하여 여러 클래스가 공유 동작을 위한 공통 인터페이스를 제공할 수 있도록 한다.
  • Advanced Usage
    • Method Overloading (Compile-time Polymorphism)
      : 이름은 같지만 매개 변수가 다른 여러 메서드를 사용할 수 있어 유연성을 확보할 수 있다.
      public class Printer {
          public void print(String s) { System.out.println(s); }
          public void print(int n) { System.out.println(n); }
      }
    • Method Overriding (Runtime Polymorphism)
      : 서브클래스가 특정 구현을 제공하도록 허용해 다형성 동작을 가능하게 한다.
      public interface Shape {
          double area();
      }
      
      public class Circle implements Shape {
          private double radius;
          public Circle(double radius) { this.radius = radius; }
          public double area() { return Math.PI * radius * radius; }
      }
    • Interface-Based Polymorphism
      : 인터페이스를 사용하면 유연성이 향상돼 서로 다른 클래스의 객체를 상호 교환적으로 사용할 수 있다.
      public interface Shape {
          double area();
      }
      
      public class Circle implements Shape {
          private double radius;
          public Circle(double radius) { this.radius = radius; }
          public double area() { return Math.PI * radius * radius; }
      }
  • Real-World Application (실제 애플리케이션)
    • Plugin Architecture
      : 다형성을 사용하면 서로 다른 플로그인 (예: DAW의 오디오 프로세서)이 동일한 인터페이스를 준수할 수 있으므로 호스트 애플리케이션이 특정 동작을 호출하면서 각 플러그인을 일반적으로 처리할 수 있다.
    • Event Handling in GUIs
      : 다형성 이벤트 처리를 사용하면 단일 핸들러가 여러 이벤트 유형을 공통 슈퍼클래스의 인스턴스로 취급해 처리할 수 있다.
  • Common Pitfalls (일반적인 함정)
    • Misuse of Overloading
      : 오버로딩은 메서드 서명이 명확하지 않은 경우, 특히 유형이나 인자 순서가 너무 유사한 경우 혼란을 야기할 수 있다.
    • Inconsistent Overrides
      : 서브클래스가 재정의된 메서드에서 일관된 동작을 유지하지 않으면 다형성으로 인해 예기치 않은 동작이 발생할 수 있다(Liskov Substitution Principle).

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함
반응형