Проучване на наследството в езика за програмиране на Java

Проучване на наследството в езика за програмиране на Java

Наследството е една от основните концепции на обектно-ориентираното програмиране. В програмирането думата наследяване представлява връзка, в която дъщерният клас приема състоянието и поведението на родителския клас.





Целта на наследяването при разработването на софтуер е да улесни повторното използване на безопасен и надежден софтуер. Едно от основните предимства на използването на наследяване е, че елиминира излишния код във вашите програми.





каква е средата между два града

Как работи наследяването

Идеята зад наследяването е, че много класове или обекти имат някои от същия набор от атрибути и методи. Следователно, в духа на създаване на надежден софтуер, новите класове вече могат да черпят от вече съществуващи свързани класове и ако е необходимо да се разширят съществуващите състояния и поведение.





Пример от реалния свят за това как наследството работи би било да се вземат предвид плодовете. Това е широк етикет, който служи за капсулиране на редица различни елементи.

Ябълката е плод, а също и портокалът. Портокалът обаче не е ябълка, така че не бихте имали плодове като един от вашите запаси, ако притежавате магазин. Може би бихте могли да имате раздел с плодове в инвентара си и под този раздел бихте имали по -специфични елементи като ябълки и портокали.



Така работи наследството.

Използване на наследяване в Java

Наследяването може да се използва във всеки език за програмиране, който използва парадигмата за обектно-ориентирано програмиране. Точният начин на използване на наследяването обаче зависи от конкретния език за програмиране.





Например, C ++ също е обектно-ориентиран език за програмиране . C ++ поддържа това, което е известно като множествено наследяване, докато Java поддържа само единично наследяване.

Това означава, че в Java родителски клас може да има много дъщерни класове, но всеки дъщерен клас може да има само един родителски клас (единично наследяване). Съществува обаче начин за постигане на косвено множествено наследяване в Java, чрез създаване на връзка между баба и дядо, родител и дете.





Създаване на родителски клас в Java

Процесът на избор на родителски клас от документ за софтуерни изисквания е известен като обектно-ориентиран анализ. По време на този процес фразата a често се използва за идентифициране на възможни наследствени отношения. Като черпите от нашия пример по -горе, би трябвало да можете да видите, че плодовете биха били нашият родителски клас.

Пример за плодов родителски клас


public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

Един от най -забележителните аспекти на родителския клас по -горе е модификаторът за достъп, който се използва с всяка декларация на променлива. Модификаторът на защитения достъп е идеален за използване в родителски класове, тъй като предотвратява получаването на достъп до атрибутите на данните на родителския клас, които не са дъщерни класове.

По -долу в кода се запознавате с конструктори, гетъри и сеттери, които са общи градивни елементи за всеки клас Java. И накрая, вие се запознавате с два метода (сок и яжте), които са създадени в родителския клас на нашата програма, тъй като те са универсални за всички плодове - всички плодове могат да се консумират и изцеждат.

Създаване на дъщерни класове в Java

Детските класове обикновено се наричат ​​специализирани или производни класове, защото наследяват състоянието и поведението от родител и често персонализират тези атрибути, за да бъдат по -конкретни.

Продължавайки с нашия пример, би трябвало да можете да видите защо оранжевото би било подходящ детски клас от горния клас плодове.

Оранжев пример за детски клас


public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

Има разлика между това как изглежда обикновената декларация на Java клас и това, което имаме в нашия код по -горе. Ключовата дума extends е това, което се използва в Java, за да направи възможно наследяването.

В нашия пример над дъщерния клас (оранжево) разширява родителския клас (плодове). Следователно състоянието и поведението на класа плодове вече могат да бъдат достъпни и променени от оранжевия клас.

Уникалният атрибут, който има нашият оранжев клас, е идентифициран с името на променливата supremes (което е официалното име за малките сегменти, открити в портокалите). Тук се проявява специализацията; не всички плодове имат супреми, но всички портокали, така че запазването на променливата supremes за оранжевия клас е логично.

Добавянето на метод за обелване към вече съществуващите методи за ядене и сок също е логично, защото макар че не всички плодове могат да бъдат обелени, портокалите често се обелват.

Трябва да имате предвид, че ако не възнамерявахме да променяме съществуващите методи на хранене и сок, няма да е необходимо да ги включваме в нашия клас портокал. Методите в оранжевия клас отменят всеки подобен метод в класа на плодовете. Така че, ако всички плодове бяха изядени и изцедени по един и същи начин, нямаше да е необходимо да създаваме тези методи в оранжевия клас.

Конструкторите на роли играят в наследство

По подразбиране конструкторите на родителски клас се наследяват от дъщерни класове. Следователно, ако е създаден обект на дъщерния клас, това означава, че обект на родителски клас също се създава автоматично.

Връщайки се към нашия пример, всеки път, когато се създава нов оранжев обект, се създава и плодов обект, защото портокал е плод.

Зад кулисите, когато се създава обект на дъщерния клас, първо се извиква конструкторът на родителския клас, последван от конструктора на дъщерния клас. В нашия оранжев дъщерен клас по -горе, ако е създаден оранжев обект без никакви параметри, ще бъде извикан конструкторът ни по подразбиране на плодов клас, последван от нашия по подразбиране оранжев клас изпълнител.

Супер методът в нашия първичен конструктор по -горе е необходим, тъй като той уточнява, че първият конструктор - а не конструкторът по подразбиране - на родителския клас плодове трябва да се извиква всеки път, когато се създаде оранжев обект с параметри.

Сега можете да използвате наследяване в Java

От тази статия успяхте да научите какво е наследяване, как работи и защо е толкова важно понятие в програмирането. Вече можете да създавате вашите отношения на наследяване, използвайки езика за програмиране на Java. Освен това сега знаете как да заобиколите единственото правило за наследяване на Java, като създадете връзка между баба и дядо.

Снимка: Andreas Wohlfahrt / Пексели

Дял Дял Туит електронна поща Как да организирате обектно-ориентирания си код с наследяване

Получаването на обектно ориентирано програмиране правилно означава, че трябва да знаете за наследяването и как то може да опрости кодирането и да намали грешките.

Прочетете Напред
Свързани теми
  • Програмиране
  • Java
  • Обектно -ориентирано програмиране
За автора Кадейша Кийн(21 статии са публикувани)

Kadeisha Kean е разработчик на софтуер с пълен набор и технически/технологичен писател. Тя има отличителната способност да опростява някои от най -сложните технологични концепции; производство на материал, който може лесно да бъде разбран от всеки начинаещ в технологиите. Тя е запалена по писането, разработването на интересен софтуер и пътуването по света (чрез документални филми).

Още от Kadeisha Kean

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате