Јава / Спринг - Наслеђивање, полиморфизам и ињекција зависности

Преглед садржаја
Размотрићемо 2 концепта програмирања Јава (Наслеђивање И Полиморфизам) да би нас припремили за разумевање напреднијег концепта тзв Убризгавање зависност што је типично за оквире попут пролећа и хибернације који се данас често користе и о којима ћемо говорити у будућим водичима.
Не, то се не односи на оне милионе које вам је ваш богати ујак оставио када је коначно умро, то је типичан концепт Јава програмирања и састоји се од "наслеђивања" поља и метода који припадају суперкласа унутар а подкласа.
Основе наслеђивања:
  • Класа која је изведена из друге класе назива се подкласа (или проширена класа, кћерка класа или изведена класа). Такође, класа чији је подкласа је изведено назива се суперкласа (такође основна класа или родитељска класа). Током целог овог водича и наредних водича користићу термине подкласа И суперкласа.
  • У Јави посебно, осим класе Објецт, СВЕ класе наслеђују директно ЈЕДНОМ суперкласа (једноставно наслеђивање). У случају да експлицитно не дефинишете надкласу, свака класа имплицитно наслеђује од класе Објецт.
  • Класа може наследити од друге класе која наслеђује од друге класе која наслеђује од друге класе све до наслеђивања од класе Објецт, тада се каже да се наведена класа "спушта" из свих класа у хијерархији у класу Објецт.
Покушајмо ово поједноставити примером:
Претпоставимо да у наследном пакету имамо следеће 3 класе:
 наслеђивање пакета; јавна класа Дог {привате инт нумберОфЛегс; приватна боја за косу; приватна гудачка трка; публиц инт гетНумберОфЛегс () {ретурн нумберОфЛегс; } публиц воид сетНумберОфЛегс (инт нумберОфЛегс) {тхис.нумберОфЛегс = нумберОфЛегс; } јавни низ гетХаирЦолор () {ретурн хаирЦолор; } публиц воид сетХаирЦолор (СтрингХаирЦолор) {тхис.ХаирЦолор = хаирЦолор; } публиц Стринг гетРаце () {ретурн раце; } публиц воид сетРаце (Стринг раце) {тхис.раце = раце; } публиц воид барк () {Систем.оут.принтлн ("Пас иде ВОВ"); }} 

 наслеђивање пакета; јавна класа Цат {привате инт нумберОфЛегс; приватна боја за косу; приватна гудачка трка; публиц инт гетНумберОфЛегс () {ретурн нумберОфЛегс; } публиц воид сетНумберОфЛегс (инт нумберОфЛегс) {тхис.нумберОфЛегс = нумберОфЛегс; } јавни низ гетХаирЦолор () {ретурн хаирЦолор; } публиц воид сетХаирЦолор (СтрингХаирЦолор) {тхис.ХаирЦолор = хаирЦолор; } публиц Стринг гетРаце () {ретурн раце; } публиц воид сетРаце (Стринг раце) {тхис.раце = раце; } публиц воид меов () {Систем.оут.принтлн ("Мачка ради МЕОВ"); }} 

 наслеђивање пакета; јавна класа Хорсе {привате инт нумберОфЛегс; приватна боја за косу; приватна гудачка трка; публиц инт гетНумберОфЛегс () {ретурн нумберОфЛегс; } публиц воид сетНумберОфЛегс (инт нумберОфЛегс) {тхис.нумберОфЛегс = нумберОфЛегс; } јавни низ гетХаирЦолор () {ретурн хаирЦолор; } публиц воид сетХаирЦолор (СтрингХаирЦолор) {тхис.ХаирЦолор = хаирЦолор; } публиц Стринг гетРаце () {ретурн раце; } публиц воид сетРаце (Стринг раце) {тхис.раце = раце; } публиц воид сус () {Систем.оут.принтлн ("Коњ ради ИИИИГГГХХХХ"); }} 

Може се видети да три класе генеришу 3 различите врсте објеката, али са више сличних карактеристика, у ствари, потпуно су исте, осим метода кора, мијаукања и хркања. Стога би, користећи концепт наслеђивања, било прикладно преписати заједничке карактеристике у а суперкласа и сваку измените подкласа тако да одговарајућу методу додају само на следећи начин:
[цолор = # а9а9а9]1[/Боја]
Ми стварамо суперкласа Животиња:
 наслеђивање пакета; јавна класа Анимал {привате инт нумберОфЛегс; приватна боја за косу; приватна гудачка трка; публиц инт гетНумберОфЛегс () {ретурн нумберОфЛегс; } публиц воид сетНумберОфЛегс (инт нумберОфЛегс) {тхис.нумберОфЛегс = нумберОфЛегс; } јавни низ гетХаирЦолор () {ретурн хаирЦолор; } публиц воид сетХаирЦолор (СтрингХаирЦолор) {тхис.ХаирЦолор = хаирЦолор; } публиц Стринг гетРаце () {ретурн раце; } публиц воид сетРаце (Стринг раце) {тхис.раце = раце; }} 

[цолор = # а9а9а9]2 [/Боја]
Модификовали смо 3 подкласе постојеће за наслеђивање из класе Анимал (користећи кључну реч "ектендс") и само додајте једну методу:
 наслеђивање пакета; јавна класа Пас проширује Анимал {публиц воид барк () {Систем.оут.принтлн ("Пас иде ВОВ"); }} 

 наслеђивање пакета; јавна класа Мачка проширује Анимал {публиц воид меов () {Систем.оут.принтлн ("Тхе цат доес МЕОВ"); }} 

 наслеђивање пакета; јавна класа Коњ проширује Животиња {публиц воид сус () {Систем.оут.принтлн ("Коњ ради ИИИИГГГХХХХ"); }} 

На овај начин кулминирамо тему "Наслеђивање" у Јави, ускоро ћемо наставити са концептом "полиморфизма" који је блиско повезан са "наслеђивањем" и помоћи ће нам да разумемо концепт "убризгавања зависности" како бисмо почели да разумемо Оквир "Пролеће".
Не заборавите да оставите своје коментаре до следећег пута!Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен
wave wave wave wave wave