이 블로그는 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에서 동적 바인딩의 사용 및 구현에 관한 전부입니다.