자바에서 위임

MD Aminul Islam 2023년10월12일
자바에서 위임

Java와 같은 프로그래밍 언어로 작업하는 경우 상속에 익숙할 수 있습니다. 그러나 상속에 대한 대안인 위임이 있습니다.

위임을 통해 다른 클래스의 개체를 인스턴스 변수로 사용할 수 있습니다. 어떻게 보면 슈퍼클래스에서 불필요한 메서드를 받아들이도록 강요하지 않기 때문에 상속보다 낫다.

게다가 인스턴스는 알려진 클래스입니다. 한 개체가 다른 개체에 메서드 호출을 전달할 수 있는 개체 간의 관계를 만드는 사람을 위임이라고 합니다.

위임은 런타임에 유연성을 제공할 수 있습니다. 그러나 문제는 대부분의 인기 있는 프로그래밍 언어가 위임을 지원하지 않는다는 것입니다.

이 기사에서는 Java에서 Delegation의 사용을 살펴보겠습니다. 또한 주제를 더 쉽게 만들기 위해 적절한 설명과 함께 예를 사용하여 주제에 대해 논의합니다.

자바의 위임

아래에서는 위임의 간단한 예를 살펴보고 부분별로 설명합니다.

class MainPrinter { // The class that hold the actual PrintData() method
  void PrintData() {
    System.out.println("This is the Delegate.");
  }
}

class MyPrinter { // The class that calls PrintData() method from the object of class MainPrinter
  MainPrinter p = new MainPrinter(); // Creating an object for MainPrinter class.
  void PrintData() {
    p.PrintData(); // Calling the method from MainPrinter class object.
  }
}

class TestDelegate {
  public static void main(String[] args) {
    MyPrinter printer = new MyPrinter(); // Creating an object for MyPrinter class.
    printer.PrintData(); // Calling the method from MyPrinter class object.
  }
}

위에서 위임을 설명하는 예를 공유했습니다. 우리는 이미 코드의 각 줄의 목적을 명령했습니다.

위의 예에서 MainPrinter, MyPrinterTestDelegate라는 이름의 세 가지 다른 클래스를 만들었습니다. 여기서 MainPrinter 클래스에는 데이터를 인쇄할 실제 메서드가 포함되어 있습니다.

그리고 MyPrinter 클래스에는 주로 MainPrinter라는 다른 클래스에서 다른 메서드를 호출하는 printData() 메서드도 포함되어 있습니다.

그러나 TestDelegate라는 처리기 클래스를 보면 MyPrinter 클래스에 실제 printData() 메서드가 없는 MyPrinter 클래스에서 객체를 생성했음을 알 수 있습니다.

위의 예제 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.

This is the Delegate.

여기에서 공유되는 코드 예제는 Java로 되어 있으며 시스템에 Java가 포함되어 있지 않은 경우 환경에 Java를 설치해야 합니다.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn