Jak korzystać z dynamicznego wiązania w Javie?

Jak Korzystac Z Dynamicznego Wiazania W Javie



wiązanie dynamiczne ” umożliwia zachowanie polimorficzne, w którym wywołanie metody obiektu jest określane w czasie wykonywania na podstawie rzeczywistego typu obiektu, a nie typu referencyjnego. Promuje ponowne użycie kodu, umożliwiając podklasom zastępowanie i zapewnianie ich implementacji metod zdefiniowanych w klasie nadrzędnej.

Ten blog demonstruje użycie i implementację dynamicznego wiązania w Javie.

Jak korzystać z dynamicznego wiązania w Javie?

Wiązanie dynamiczne umożliwia luźne łączenie między obiektami. Pomaga w łatwym rozszerzaniu funkcjonalności poprzez dodawanie nowych podklas, które zastępują metody bez modyfikowania istniejącego kodu. Wiązanie dynamiczne jest szeroko stosowane w systemach wysyłania w czasie wykonywania, obsługi zdarzeń lub wtyczek.







Przejdźmy przez kilka przykładów, aby uzyskać szczegółowe wyjaśnienie:



Przykład 1: Implementacja dynamicznego wiązania



Korzystając z dynamicznego wiązania, programiści mogą umożliwić użytkownikom dostosowywanie i zastępowanie domyślnych zachowań w celu tworzenia dostosowanych aplikacji. W celu praktycznego wdrożenia przeanalizujmy przykład:





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

klasa publiczna DynBind {
public static void main ( Strunowy [ ] argumenty ) {
GameType1 = nowy krykiet ( ) ;
GameType2 = nowe CallofDuty ( ) ;
Typ gry1.Typ gry ( ) ;
Typ gry2.Typ gry ( ) ;
}
}
klasa Gry {
public void typ gry ( ) {
System.out.println ( „Gry fizyczne lub wirtualne” ) ;
}
}
klasa Cricket rozszerza Gaming {
@ Nadpisanie
public void typ gry ( ) {
System.out.println ( „Krykiet to gra fizyczna” ) ;
}
}
klasa CallofDuty rozszerza Gaming {
@ Nadpisanie
public void typ gry ( ) {
System.out.println ( „CallofDuty to gra wirtualna” ) ;
}
}

Wyjaśnienie powyższego kodu:



  • Najpierw klasa „ DynBind ” jest tworzony i dwa obiekty typu „ Hazard ” są zadeklarowane.
  • Następnie obiekty te są inicjowane z nowym „ Krykiet ' I ' CallofDuty ”, ta inicjalizacja demonstruje dynamiczne wiązanie. Typ odniesienia to „ Hazard ”, ale rzeczywiste typy obiektów to „ Krykiet ' I ' CallofDuty ”, odpowiednio.
  • Teraz obiekty te są wykorzystywane do wywoływania „ rodzaj gry() ” funkcje poprzez zastąpienie funkcji w klasach potomnych.
  • Następnie rodzic „ Hazard ” jest zadeklarowana klasa, która tworzy i inicjuje „ rodzaj gry() ”, która drukuje fikcyjną wiadomość tekstową.
  • Następnie tworzone są dwie klasy potomne o nazwie „ Krykiet ' I ' CallofDuty ”. Te klasy są dziedziczone z rodzica „ Hazard ' klasa.
  • Następnie „ @Nadpisanie ” adnotacja jest używana do zastąpienia elementu nadrzędnego „ Hazard ” metody klasy o nazwie „ rodzaj gry() ”.
  • Na koniec w obu metodach nadpisanych przez klasę potomną wyświetlany jest inny fikcyjny komunikat.

Po zakończeniu fazy wykonawczej:

Dane wyjściowe pokazują, że fikcyjne komunikaty klas podrzędnych są wyświetlane na konsoli przy użyciu dynamicznego wiązania.

Przykład 2: Implementacja dziedziczenia wielopoziomowego

Dynamiczne wiązanie można również zaimplementować w celu utworzenia dziedziczenia wielopoziomowego. Dwa bloki kodu tego samego programu, jak pokazano poniżej:

klasa Gry {
public void typ gry ( ) {
System.out.println ( „Gry fizyczne lub wirtualne” ) ;
}
}
klasa Cricket rozszerza Gaming {
@ Nadpisanie
public void typ gry ( ) {
System.out.println ( „Krykiet to gra fizyczna” ) ;
}
public void playFormat ( ) {
System.out.println ( „Krykiet ma różne formaty gry” ) ;
}
}
klasa CallofDuty rozszerza Gaming {
@ Nadpisanie
public void typ gry ( ) {
System.out.println ( „CallofDuty to gra wirtualna” ) ;
}
publiczny unieważniony tryb gry ( ) {
System.out.println ( „CallofDuty ma wiele trybów gry” ) ;
}
}
klasa CricketGame rozszerza Cricket {
publiczny unieważniony tryb gry ( ) {
System.out.println ( „Krykiet ma tryb pojedynczej gry” ) ;
}
}
klasa CallofDutyGame rozszerza CallofDuty {
}

Wyjaśnienie powyższego kodu:

  • Najpierw rodzic „ Hazard ” klasa jest tworzona i zawiera „ rodzaj gry() ”, która zawiera fikcyjny komunikat.
  • Następnie dwie klasy podrzędne o nazwie „ Krykiet ' I ' CallofDuty ” są tworzone, oba zastępują funkcję klasy nadrzędnej o nazwie „ rodzaj gry() ”.
  • Te klasy zawierają jedną dodatkową funkcję o nazwie „ odtwarzanieFormat() ' I ' tryb gry() ”, odpowiednio.
  • Następnie utwórz wielopoziomowe dziecko o nazwie „ gra w krykieta ”rozwijane przez dziecko” Krykiet ' klasa. Zawiera „ tryb gry() ” funkcja, która jest przesłonięta przez swojego rodzica „ Krykiet ' klasa.
  • Następnie „ Gra CallofDuty ” klasa jest tworzona jako dziecko dla „ CallofDuty ' klasa. Tworzy wielopoziomowe dziedziczenie i umożliwia funkcjonalność dynamicznego wiązania.

Teraz wstaw „ główny() ' metoda:

klasa publiczna DynBind {
public static void main ( Strunowy [ ] argumenty ) {
Gra CallofDuty kod = nowa gra CallofDuty ( ) ;
codg.Typ gry ( ) ;
codg.tryb gry ( ) ;

gra w krykieta płacz = nowa gra w krykieta ( ) ;
Cricg.Typ gry ( ) ;
cricg.playingFormat ( ) ;
cricg.tryb gry ( ) ;
}
}

Wyjaśnienie powyższego kodu:

  • Po pierwsze, obiekt „ Gra CallofDuty ” tworzona jest klasa, która wywołuje funkcje swoich klas nadrzędnych.
  • W ten sam sposób „ gra w krykieta ” zostaje zadeklarowany obiekt, który wywołuje swoją funkcję klasy nadrzędnej, która jest dostępna wielopoziomowo w hierarchii.

Po zakończeniu fazy wykonawczej:

Dane wyjściowe pokazują, że dziedziczenie wielopoziomowe jest tworzone przy użyciu dynamicznego wiązania w Javie.

Wniosek

W Javie „ wiązanie dynamiczne ” oferuje korzyści, takie jak polimorfizm, możliwość ponownego użycia kodu, elastyczność i rozszerzalność. Realizuje się to poprzez przestrzeganie zasad dziedziczenia, nadpisywania metod i rzutowania w górę. Dynamiczne wiązanie umożliwia również działanie funkcji wykonawczych i zwiększa elastyczność i polimorfizm w koncepcji OOP. To wszystko o użyciu i implementacji dynamicznego wiązania w Javie.