Съдържание
Ще разгледаме 2 концепции за програмиране на Java (Наследяване Y Полиморфизъм), за да ни подготви да разберем една по -напреднала концепция, наречена Инжектиране на зависимост което е типично за рамки като Spring и Hibernate, които се използват често днес и за които ще говорим в бъдещи уроци.Не, това не се отнася до онези милиони, които богатият ви чичо ви напусна, когато най -накрая умря, това е типична концепция за програмиране на Java и се състои от „наследяване“ на полета и методи, принадлежащи на суперклас в рамките на a подклас.
Основи на наследяването:
- Клас, който е получен от друг клас, се нарича подклас (или разширен клас, дъщеря клас или производен клас). Също така, класът на който подклас се извежда се нарича суперклас (също базов клас или родителски клас). По време на този урок и следващите уроци ще използвам термините подклас Y суперклас.
- В Java специално, с изключение на класа Обект, ВСИЧКИ класове наследяват директно на ЕДИН суперклас (просто наследяване). В случай, че не е дефиниран изрично суперкласа, всеки клас наследява имплицитно от класа Обект.
- Класът може да наследи от друг клас, който наследява от друг клас, който наследява от друг клас, докато не наследи от класа Обект, тогава се казва, че споменатият клас "се спуска" от всички класове в йерархията към класа Обект.
Да предположим, че имаме следните 3 класа в пакета за наследяване:
пакетно наследяване; публичен клас Dog {private int numberOfLegs; частна боя за коса; частна струнна надпревара; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } обществен String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } обществен String getRace () {връщане състезание; } public void setRace (String race) {this.race = раса; } public void bark () {System.out.println ("Кучето отива WOW"); }}
пакетно наследяване; публичен клас Cat {private int numberOfLegs; частна боя за коса; частна струнна надпревара; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } обществен String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } публичен String getRace () {връщане състезание; } public void setRace (String race) {this.race = раса; } public void meow () {System.out.println ("Котката прави MEOW"); }}
пакетно наследяване; обществен клас Horse {private int numberOfLegs; частна боя за коса; частна струнна надпревара; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } обществен String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } публичен String getRace () {връщане състезание; } public void setRace (String race) {this.race = раса; } публично невалидно съседи () {System.out.println ("Конят прави IIIIGGGHHHH"); }}
Може да се види, че трите класа генерират 3 различни типа обекти, но с множество сходни характеристики, всъщност те са абсолютно еднакви, с изключение на методите на кората, мяукането и ръжането. Следователно, използвайки концепцията за наследство, би било подходящо да се пренапишат общите характеристики в a суперклас и променяйте всеки подклас така че те само добавят съответния метод, както следва:
[color = # a9a9a9]1[/Цвят]
Ние създаваме суперклас Животно:
пакетно наследяване; публичен клас Animal {private int numberOfLegs; частна боя за коса; частна струнна надпревара; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } обществен String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } обществен String getRace () {връщане състезание; } public void setRace (String race) {this.race = раса; }}
[color = # a9a9a9]2 [/Цвят]
Променяме 3 подкласове съществуващи, за да наследите от класа Animal (използвайки ключовата дума "extends") и просто добавете единствения метод:
пакетно наследяване; публичен клас Dog extends Animal {public void bark () {System.out.println ("Dog goes WOW"); }}
пакетно наследяване; публичен клас Cat разширява Animal {public void meow () {System.out.println ("Котката прави MEOW"); }}
пакетно наследяване; обществен клас Кон се разширява Животно {public void sus () {System.out.println ("Кон прави IIIIGGGHHHH"); }}
По този начин ние завършваме темата „Наследяване“ в Java, скоро ще продължим с концепцията за „Полиморфизъм“, която е тясно свързана с „Наследяване“ и ще ни помогне да разберем концепцията за „Инжектиране на зависимост“, за да започнем да разбираме Рамка "Пролет".
Не забравяйте да оставите коментарите си до следващия път!Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка