Овај блог показује употребу и примену динамичког везивања у Јави.
Како користити динамичко везивање у Јави?
Динамичко везивање омогућава лабаво спајање између објеката. Помаже у једноставном проширењу функционалности додавањем нових подкласа које замењују методе без модификације постојећег кода. Динамичко везивање се нашироко користи за диспечирање у току извршавања, руковање догађајима или системе додатака.
Хајде да прођемо кроз неколико примера за детаљно објашњење:
Пример 1: Имплементација динамичког везивања
Коришћењем динамичког повезивања, програмери могу да дозволе корисницима да прилагоде и замене подразумевана понашања да би направили прилагодљиве апликације. За практичну имплементацију, хајде да прођемо кроз пример:
импорт јава.утил.Арраис;
импорт јава.утил.ХасхСет;
импорт јава.утил.Лист;
импорт јава.утил.Сет;
јавна класа ДинБинд {
јавна статична празнина главна ( Низ [ ] аргс ) {
Гаминг гамеТипе1 = нови крикет ( ) ;
Гаминг гамеТипе2 = нови ЦаллофДути ( ) ;
гамеТипе1.гамеТипе ( ) ;
гамеТипе2.гамеТипе ( ) ;
}
}
цласс Гаминг {
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Физичке или виртуелне игре“ ) ;
}
}
класа Крикет проширује гаминг {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Крикет је физичка игра“ ) ;
}
}
класа ЦаллофДути проширује игре {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „ЦаллофДути је виртуелна игра“ ) ;
}
}
Објашњење горњег кода:
- Прво, час „ ДинБинд ” се креира, а два објекта типа „ Гаминг ” су проглашени.
- Затим се ови објекти иницијализују са новим „ крикет ' и ' Зов дужности ” објеката, ова иницијализација демонстрира динамичко везивање. Референтни тип је „ Гаминг ” али стварни типови објеката су „ крикет ' и ' Зов дужности ', редом.
- Сада се ови објекти користе за позивање „ гамеТипе() ” функционише тако што ће надјачати функцију у подређеним класама.
- Затим, родитељ „ Гаминг ” је декларисана класа која креира и иницијализује „ гамеТипе() ” функција, која штампа лажну текстуалну поруку.
- Затим се креирају две дечје класе са именом „ крикет ' и ' Зов дужности ”. Ове класе су наслеђене од родитељског “ Гаминг ' класа.
- Након тога, „ @Прегазити ” напомена се користи да замени родитељ “ Гаминг ” методе класе под називом “ гамеТипе() ”.
- На крају, другачија лажна порука се приказује у обе методе које су надјачане класе деце.
Након завршетка фазе извршења:
Излаз приказује да се лажне поруке подређених класа приказују на конзоли коришћењем динамичког повезивања.
Пример 2: Имплементација наслеђивања на више нивоа
Динамичко везивање се такође може применити за креирање наслеђа на више нивоа. Два блока кода истог програма као што је приказано испод:
цласс Гаминг {публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Физичке или виртуелне игре“ ) ;
}
}
класа Крикет проширује гаминг {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „Крикет је физичка игра“ ) ;
}
публиц воид плаиингФормат ( ) {
Систем.оут.принтлн ( „Крикет има различите формате играња“ ) ;
}
}
класа ЦаллофДути проширује игре {
@ Прегазити
публиц воид гамеТипе ( ) {
Систем.оут.принтлн ( „ЦаллофДути је виртуелна игра“ ) ;
}
јавни воид гамеМоде ( ) {
Систем.оут.принтлн ( „ЦаллофДути има више начина игре“ ) ;
}
}
класа ЦрицкетГаме проширује Црицкет {
јавни воид гамеМоде ( ) {
Систем.оут.принтлн ( „Крикет има режим једне игре“ ) ;
}
}
класа ЦаллофДутиГаме проширује ЦаллофДути {
}
Објашњење горњег кода:
- Прво, родитељ „ Гаминг ” класа је креирана и укључује „ гамеТипе() ” функција која садржи лажну поруку.
- Затим, два дечја одељења под називом „ крикет ' и ' Зов дужности ” се креирају, обе замењују функцију родитељске класе под називом „ гамеТипе() ”.
- Ове класе садрже једну додатну функцију под називом „ плаиингФормат() ' и ' гамеМоде() ” функције, респективно.
- Затим креирајте дете на више нивоа под називом „ ЦрицкетГаме “које дете продужава” крикет ' класа. Садржи „ гамеМоде() ” функција коју замењује њен родитељ “ крикет ' класа.
- Након тога, „ ЦаллофДутиГаме ” класа је креирана као дете за “ Зов дужности ' класа. То ствара наслеђе на више нивоа и омогућава функционалност динамичког везивања.
Сада убаците „ главни() ” метод:
јавна класа ДинБинд {јавна статична празнина главна ( Низ [ ] аргс ) {
ЦаллофДутиГаме цодг = нова ЦаллофДутиГаме ( ) ;
цодг.гамеТипе ( ) ;
цодг.гамеМоде ( ) ;
ЦрицкетГаме црицг = нова ЦрицкетГаме ( ) ;
црицг.гамеТипе ( ) ;
црицг.плаиингФормат ( ) ;
црицг.гамеМоде ( ) ;
}
}
Објашњење горњег кода:
- Прво, објекат „ ЦаллофДутиГаме ” креира се класа која позива функције својих родитељских класа.
- На исти начин, „ ЦрицкетГаме ” је декларисан објекат који позива функцију родитељске класе која је доступна на више нивоа у хијерархији.
Након завршетка фазе извршења:
Излаз показује да се наслеђивање на више нивоа креира коришћењем динамичког везивања у Јави.
Закључак
У Јави, „ динамичко везивање ” нуди предности као што су полиморфизам, поновна употреба кода, флексибилност и проширивост. Имплементира се праћењем правила насљеђивања, замјене метода и упцастинга. Динамичко везивање такође омогућава рунтиме функције и побољшава флексибилно и полиморфно понашање у ООП концепту. То је све о употреби и имплементацији динамичког везивања у Јави.