Java에서 동적 바인딩을 사용하는 방법?

Java Eseo Dongjeog Bainding Eul Sayonghaneun Bangbeob



동적 바인딩 ”는 객체의 메서드 호출이 참조 유형이 아닌 객체의 실제 유형을 기반으로 런타임에 결정되는 다형성 동작을 허용합니다. 하위 클래스가 상위 클래스에 정의된 메서드 구현을 재정의하고 제공하도록 허용하여 코드 재사용성을 촉진합니다.

이 블로그는 Java에서 동적 바인딩의 사용법과 구현을 보여줍니다.

Java에서 동적 바인딩을 사용하는 방법?

동적 결합은 개체 간의 느슨한 결합을 가능하게 합니다. 기존 코드를 수정하지 않고 메서드를 재정의하는 새 하위 클래스를 추가하여 기능을 쉽게 확장하는 데 도움이 됩니다. 동적 바인딩은 런타임 디스패칭, 이벤트 처리 또는 플러그인 시스템에 널리 사용됩니다.







자세한 설명을 위해 몇 가지 예를 살펴보겠습니다.



예제 1: 동적 바인딩 구현



프로그래머는 동적 바인딩을 사용하여 사용자가 기본 동작을 사용자 지정하고 재정의하여 사용자 지정 가능한 응용 프로그램을 구축하도록 허용할 수 있습니다. 실제 구현을 위해 다음 예를 살펴보겠습니다.





import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

공개 클래스 DynBind {
공공 정적 무효 메인 ( [ ] 인수 ) {
게임 gameType1 = 새 크리켓 ( ) ;
게임 gameType2 = 새로운 CallofDuty ( ) ;
gameType1.게임 유형 ( ) ;
gameType2.gameType ( ) ;
}
}
클래스 게임 {
공공 무효 게임 유형 ( ) {
System.out.println ( '실제 또는 가상 게임' ) ;
}
}
class Cricket은 게임을 확장합니다. {
@ 우세하다
공공 무효 게임 유형 ( ) {
System.out.println ( '크리켓은 물리적인 게임입니다' ) ;
}
}
클래스 CallofDuty는 게임을 확장합니다. {
@ 우세하다
공공 무효 게임 유형 ( ) {
System.out.println ( 'CallofDuty는 가상 게임입니다' ) ;
}
}

위 코드에 대한 설명:



  • 첫째, 수업 ' 다인바인드 '가 생성되고 '유형의 두 개체 노름 '라고 선언합니다.
  • 다음으로 이러한 개체는 새 ' 크리켓 ' 그리고 ' CallofDuty ” 개체, 이 초기화는 동적 바인딩을 보여줍니다. 참조 유형은 ' 노름 '이지만 실제 개체 유형은 ' 크리켓 ' 그리고 ' CallofDuty ', 각각.
  • 이제 이러한 개체는 ' 게임 타입() ” 하위 클래스의 기능을 재정의하여 기능합니다.
  • 그러면 부모는 “ 노름 '를 생성하고 초기화하는 클래스가 선언됩니다. 게임 타입() ” 더미 텍스트 메시지를 인쇄하는 기능.
  • 다음으로 '라는 이름으로 두 개의 하위 클래스가 생성됩니다. 크리켓 ' 그리고 ' CallofDuty '. 이러한 클래스는 부모 ' 노름 ' 수업.
  • 그 후, “ @우세하다 '주석은 상위 '를 재정의하는 데 사용됩니다. 노름 ”라는 이름의 클래스 메소드 게임 타입() '.
  • 결국 두 하위 클래스 재정의 메서드에 서로 다른 더미 메시지가 표시됩니다.

실행 단계 종료 후:

출력은 하위 클래스의 더미 메시지가 동적 바인딩을 사용하여 콘솔에 표시됨을 표시합니다.

예제 2: 다단계 상속 구현

다단계 상속 생성을 위해 동적 바인딩을 구현할 수도 있습니다. 아래와 같이 동일한 프로그램의 두 코드 블록:

클래스 게임 {
공공 무효 게임 유형 ( ) {
System.out.println ( '실제 또는 가상 게임' ) ;
}
}
class Cricket은 게임을 확장합니다. {
@ 우세하다
공공 무효 게임 유형 ( ) {
System.out.println ( '크리켓은 물리적인 게임입니다' ) ;
}
공공 무효 playingFormat ( ) {
System.out.println ( '크리켓은 경기 형식이 다릅니다' ) ;
}
}
클래스 CallofDuty는 게임을 확장합니다. {
@ 우세하다
공공 무효 게임 유형 ( ) {
System.out.println ( 'CallofDuty는 가상 게임입니다' ) ;
}
공개 무효 게임 모드 ( ) {
System.out.println ( 'CallofDuty에는 여러 게임 모드가 있습니다.' ) ;
}
}
CricketGame 클래스는 Cricket을 확장합니다. {
공개 무효 게임 모드 ( ) {
System.out.println ( '크리켓에는 단일 게임 모드가 있습니다' ) ;
}
}
CallofDutyGame 클래스는 CallofDuty를 확장합니다. {
}

위 코드에 대한 설명:

  • 첫째, 학부모 “ 노름 ” 클래스가 생성되고 “ 게임 타입() ” 더미 메시지를 포함하는 기능.
  • 다음으로 '라는 이름의 두 하위 클래스 크리켓 ' 그리고 ' CallofDuty '라는 이름의 부모 클래스 함수를 재정의하여 생성됩니다. 게임 타입() '.
  • 이 클래스에는 '라는 이름의 추가 함수가 하나 있습니다. playingFormat() ' 그리고 ' 게임 모드() ” 기능을 각각 수행합니다.
  • 그런 다음 '라는 다단계 자식을 만듭니다. 크리켓게임 ” 아이가 확장한 “ 크리켓 ' 수업. 여기에는 ' 게임 모드() ” 부모에 의해 무시되는 기능 “ 크리켓 ' 수업.
  • 그 후, “ CallofDutyGame ” 클래스는 “ CallofDuty ' 수업. 다단계 상속을 생성하고 동적 바인딩 기능을 활성화합니다.

이제 '를 삽입하십시오. 기본() ' 방법:

공개 클래스 DynBind {
공공 정적 무효 메인 ( [ ] 인수 ) {
CallofDutyGame 코드 = 새로운 CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

크리켓게임 크릭 = 새로운 CricketGame ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

위 코드에 대한 설명:

  • 첫째, '의 대상 CallofDutyGame ” 부모 클래스의 기능을 호출하는 클래스가 생성됩니다.
  • 같은 방식으로 ' 크리켓게임 ” 계층 구조의 다단계에서 사용할 수 있는 부모 클래스 함수를 호출하는 개체가 선언됩니다.

실행 단계 종료 후:

출력은 Java에서 동적 바인딩을 사용하여 다중 레벨 상속이 생성되었음을 보여줍니다.

결론

자바에서는 ' 동적 바인딩 ”는 다형성, 코드 재사용성, 유연성 및 확장성과 같은 이점을 제공합니다. 상속, 메서드 재정의 및 업캐스팅 규칙에 따라 구현됩니다. 또한 동적 바인딩은 런타임 기능을 활성화하고 OOP 개념에서 유연하고 다형성적인 동작을 향상시킵니다. 이것이 Java에서 동적 바인딩의 사용 및 구현에 관한 전부입니다.