Како користити динамичко везивање у Јави?

Kako Koristiti Dinamicko Vezivane U Javi



динамичко везивање ” дозвољава полиморфно понашање, при чему се позивање методе објекта одређује током извршавања на основу стварног типа објекта, а не референтног типа. Он промовише поновну употребу кода дозвољавајући подкласама да заобиђу и обезбеде њихову имплементацију метода дефинисаних у родитељској класи.

Овај блог показује употребу и примену динамичког везивања у Јави.

Како користити динамичко везивање у Јави?

Динамичко везивање омогућава лабаво спајање између објеката. Помаже у једноставном проширењу функционалности додавањем нових подкласа које замењују методе без модификације постојећег кода. Динамичко везивање се нашироко користи за диспечирање у току извршавања, руковање догађајима или системе додатака.







Хајде да прођемо кроз неколико примера за детаљно објашњење:



Пример 1: Имплементација динамичког везивања



Коришћењем динамичког повезивања, програмери могу да дозволе корисницима да прилагоде и замене подразумевана понашања да би направили прилагодљиве апликације. За практичну имплементацију, хајде да прођемо кроз пример:





импорт јава.утил.Арраис;
импорт јава.утил.ХасхСет;
импорт јава.утил.Лист;
импорт јава.утил.Сет;

јавна класа ДинБинд {
јавна статична празнина главна ( Низ [ ] аргс ) {
Гаминг гамеТипе1 = нови крикет ( ) ;
Гаминг гамеТипе2 = нови ЦаллофДути ( ) ;
гамеТипе1.гамеТипе ( ) ;
гамеТипе2.гамеТипе ( ) ;
}
}
цласс Гаминг {
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Физичке или виртуелне игре“ ) ;
}
}
класа Крикет проширује гаминг {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Крикет је физичка игра“ ) ;
}
}
класа ЦаллофДути проширује игре {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „ЦаллофДути је виртуелна игра“ ) ;
}
}

Објашњење горњег кода:



  • Прво, час „ ДинБинд ” се креира, а два објекта типа „ Гаминг ” су проглашени.
  • Затим се ови објекти иницијализују са новим „ крикет ' и ' Зов дужности ” објеката, ова иницијализација демонстрира динамичко везивање. Референтни тип је „ Гаминг ” али стварни типови објеката су „ крикет ' и ' Зов дужности ', редом.
  • Сада се ови објекти користе за позивање „ гамеТипе() ” функционише тако што ће надјачати функцију у подређеним класама.
  • Затим, родитељ „ Гаминг ” је декларисана класа која креира и иницијализује „ гамеТипе() ” функција, која штампа лажну текстуалну поруку.
  • Затим се креирају две дечје класе са именом „ крикет ' и ' Зов дужности ”. Ове класе су наслеђене од родитељског “ Гаминг ' класа.
  • Након тога, „ @Прегазити ” напомена се користи да замени родитељ “ Гаминг ” методе класе под називом “ гамеТипе() ”.
  • На крају, другачија лажна порука се приказује у обе методе које су надјачане класе деце.

Након завршетка фазе извршења:

Излаз приказује да се лажне поруке подређених класа приказују на конзоли коришћењем динамичког повезивања.

Пример 2: Имплементација наслеђивања на више нивоа

Динамичко везивање се такође може применити за креирање наслеђа на више нивоа. Два блока кода истог програма као што је приказано испод:

цласс Гаминг {
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Физичке или виртуелне игре“ ) ;
}
}
класа Крикет проширује гаминг {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Крикет је физичка игра“ ) ;
}
публиц воид плаиингФормат ( ) {
Систем.оут.принтлн ( „Крикет има различите формате играња“ ) ;
}
}
класа ЦаллофДути проширује игре {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „ЦаллофДути је виртуелна игра“ ) ;
}
јавни воид гамеМоде ( ) {
Систем.оут.принтлн ( „ЦаллофДути има више начина игре“ ) ;
}
}
класа ЦрицкетГаме проширује Црицкет {
јавни воид гамеМоде ( ) {
Систем.оут.принтлн ( „Крикет има режим једне игре“ ) ;
}
}
класа ЦаллофДутиГаме проширује ЦаллофДути {
}

Објашњење горњег кода:

  • Прво, родитељ „ Гаминг ” класа је креирана и укључује „ гамеТипе() ” функција која садржи лажну поруку.
  • Затим, два дечја одељења под називом „ крикет ' и ' Зов дужности ” се креирају, обе замењују функцију родитељске класе под називом „ гамеТипе() ”.
  • Ове класе садрже једну додатну функцију под називом „ плаиингФормат() ' и ' гамеМоде() ” функције, респективно.
  • Затим креирајте дете на више нивоа под називом „ ЦрицкетГаме “које дете продужава” крикет ' класа. Садржи „ гамеМоде() ” функција коју замењује њен родитељ “ крикет ' класа.
  • Након тога, „ ЦаллофДутиГаме ” класа је креирана као дете за “ Зов дужности ' класа. То ствара наслеђе на више нивоа и омогућава функционалност динамичког везивања.

Сада убаците „ главни() ” метод:

јавна класа ДинБинд {
јавна статична празнина главна ( Низ [ ] аргс ) {
ЦаллофДутиГаме цодг = нова ЦаллофДутиГаме ( ) ;
цодг.гамеТипе ( ) ;
цодг.гамеМоде ( ) ;

ЦрицкетГаме црицг = нова ЦрицкетГаме ( ) ;
црицг.гамеТипе ( ) ;
црицг.плаиингФормат ( ) ;
црицг.гамеМоде ( ) ;
}
}

Објашњење горњег кода:

  • Прво, објекат „ ЦаллофДутиГаме ” креира се класа која позива функције својих родитељских класа.
  • На исти начин, „ ЦрицкетГаме ” је декларисан објекат који позива функцију родитељске класе која је доступна на више нивоа у хијерархији.

Након завршетка фазе извршења:

Излаз показује да се наслеђивање на више нивоа креира коришћењем динамичког везивања у Јави.

Закључак

У Јави, „ динамичко везивање ” нуди предности као што су полиморфизам, поновна употреба кода, флексибилност и проширивост. Имплементира се праћењем правила насљеђивања, замјене метода и упцастинга. Динамичко везивање такође омогућава рунтиме функције и побољшава флексибилно и полиморфно понашање у ООП концепту. То је све о употреби и имплементацији динамичког везивања у Јави.