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