what is inheritance java tutorial with examples
Овај водич објашњава концепт наслеђивања у Јави, повезане термине као што су „ектендс“ и „супер“ кључне речи, подкласа, суперкласа, односи Ис-А, ХАС-А итд.:
Након сазнања о три стуба ООП-а, наиме, Апстракцији, Капсулацији и Полиморфизму на Јави, дошли смо до последњег стуба ООП-а, односно наследства.
Почевши од овог водича, разговараћемо о наслеђивању на Јави у следећих неколико водича.
=> Прочитајте серију Еаси Јава Траининг.
Шта ћете научити:
Наслеђивање у Јави
Наслеђивање у Јави може се дефинисати као техника или процес у којем један предмет класе стиче понашање и својства другог објекта. То се ради наслеђивањем класе или успостављањем односа између две класе.
На пример, жаба је водоземац. Као и друге животиње из класе водоземаца, жаба може имати много карактеристика које су заједничке другим животињама. Дакле, овде је водоземац врста и животиње попут жаба су њени чланови.
Ако морамо да представљамо водоземце и њихове чланове у софтверском представљању користећи ООП, онда ћемо развити класу „Водоземци“ која садржи својства или понашање које је заједничко водоземцима уопште.
На овај начин не морамо дуплицирати уобичајена својства и понашање сваке животиње водоземца коју описујемо. Директно ћемо створити класу за животиње водоземаца и наследити од класе водоземаца као што је приказано доле.
Дакле, општа идеја која стоји иза функције „Наслеђивање“ је да можемо да стварамо нове класе наслеђивањем из већ постојећих класа. Наслеђивањем из већ постојећих класа добијамо на коришћење својства и понашање ових класа. Поред тога, можемо додати још својстава и / или понашања у нашу нову класу.
Функција наслеђивања приказује „ родитељ-дете ”Веза или веза у Јави. Класа из које се наслеђује нова класа назива се „ Разред родитеља “Док се нова класа назива„ Дечији разред ”.
Наслеђе се углавном користи:
- За превладавање методе тако да можемо постићи време полиморфизма .
- До поново користите код . Наслеђивањем из већ постојећих класа, обезбеђујемо поновна употребљивост кода.
Уобичајена терминологија која се користи у наслеђивању
- Могућност поновне употребе: Механизам којим нове класе поново користе поља или својства и методе постојеће класе.
- Класа: Класа је колекција предмета који имају заједничка својства. Класа се може гледати као предложак или као плави отисак за објекте.
- Подразред / Дечија класа: Класа која наслеђује другу класу је подкласа или подређена класа или изведена класа.
- Супер класа / разред родитеља: Класа коју наслеђује друга класа да би стекла својства и методе назива се родитељска класа или суперкласа или основна класа.
Следећа хијерархија наследства је пример који приказује суперкласу и подкласу.
Имамо класу Емплоиее са пољима ОрганисатионНаме и ЕмплоиееИд. Може да садржи и друга поља као што су име запосленог, одељење и други детаљи о запосленом.
Затим изводимо другу класу под називом „СофтвареДевелопер“ са платом и погодностима на терену. Класа класа СофтвареДевелопер наслеђује од класе Емплоиее, а тиме и стиче својства класе Емплоиее.
Као што је приказано на горњем дијаграму, овде је класа Емплоиее Супер или Басе класа, а СофтвареДевелопер подкласа или изведена класа.
‘Ектендс’ Кључна реч у Јави
У Јави се за наслеђивање класе користи кључна реч ‘ектендс’.
Општа синтакса наслеђивања Јава дата је у наставку:
class SubClass extends SuperClass { //subclass methods and fields }
Као што је горе приказано, кључна реч ‘ектендс’ појављује се иза назива класе у синтакси декларације класе.
Кључна реч ‘ектендс’ преноси да стварамо нову класу ‘СубЦласс’ која ће наследити својства и понашање од ‘СуперЦласс’. Другим речима, кључна реч ектендс указује на то да градимо нову класу подкласе на постојећој функционалности СуперЦласс.
Наслеђе имплементирано помоћу кључне речи ‘ектендс’ је наследство класе. У следећем упутству разговараћемо о другој кључној речи „имплементира“ помоћу које можемо наследити интерфејсе.
Пример класе Емплоиее-СофтвареДевелопер који смо горе објаснили може се представити као:
class Employee{ String OrganizationName; int EmployeeId; } class SoftwareDeveloper extends Employee{ float Salary; float Perks; }
ИС-А И ХАС-А веза
Размотрите следећу структуру класе:
class Mammal{ } class Cow extends Mammal{ }
Па како можемо да протумачимо горњу структуру? Како се класа Крава проширује или наслеђује сисара, можемо рећи „Крава ЈЕ Сисар “или„ Крава ЈЕ ВРСТА Сисари ”. Отуда кад год изражавамо такве односе, тај однос је однос „ИС_А“.
У горњој структури користили смо наследну хијерархију да изразимо чињеницу да је једна врста друге врсте. Дакле, у горњој структури користили смо наследство да означимо однос између Краве и Сисара.
Слично томе, можемо изразити још неке везе ИС-А на следећи начин:
Горе наведени су неки од уобичајених примера односа које можемо изразити користећи наслеђивање у Јави.
Генерално, односи ИС-А могу се изразити наслеђивањем.
Сада да видимо пример испод:
На горњем дијаграму видимо да је возило приказано у два дела, тј. Мотор и кочница. Па како можемо овај сценарио преточити у речи?
Можемо рећи да „Возило садржи мотор и возило садржи кочница ”.
Дакле, оно што овде изражавамо није однос „ИС-А“, већ однос ограничавања у којем одређујемо један објекат као део другог објекта.
двд риппер за виндовс 10 бесплатно преузимање
У горњем примеру мотор је а део возило. То није „ као ' возило. Ово је ' ИМА ”Или однос ограничења или састава на Јави. Однос Хас-однос у Јави изражава се укључивањем објекта као члана класе.
Дакле, ако следимо исти пример возила горе, можемо то изразити као доле:
class Engine{ } class Brake { } class Vehicle{ Engine e; Brake b; }
Дакле, Возило има мотор и кочницу. Изражавањем односа на горе наведени начин, нисмо заинтересовани за интерну примену мотора или кочнице. Класа возила обавестиће часове мотора и кочења шта је потребно и те класе ће то обезбедити.
Попут односа ИС-А, однос ХАС-А такође је користан у поновној употреби кода.
У овом водичу детаљно ћемо разговарати о наслеђивању (ИС-А), а у следећем упутству о ограничењу или саставу (ХАС-А).
Пример наслеђивања Јава
Применимо једноставан пример у Јави да демонстрирамо наслеђивање.
//example class demonstrating Inheritance in Java class BaseClass { public void display() { System.out.println('BaseClass::Display'); } } //create a new class from BaseClass class DerivedClass extends BaseClass { public void print() { System.out.println('DerivedClass::print'); } } class Main { public static void main(String() args) { //create an object of DerivedClass DerivedClass d1 = new DerivedClass(); d1.display(); //call BaseClass method d1.print(); //call DerivedClass method } }
Излаз:
Горњи програм приказује једноставан пример наслеђивања. Декларише се БасеЦласс са једном методом. Затим се декларише друга класа ДериведЦласс која проширује БасеЦласс. Ова класа такође има један метод.
У главној методи програма креирамо објекат ДериведЦласс и помоћу овог објекта називамо БасеЦласс као и методу ДериведЦласс.
Излаз приказује поруке одштампане обема методама. Како се ДериведЦласс проширује БасеЦласс, а метода БасеЦласс је јавна, видљива је ДериведЦласс.
„Супер“ кључна реч у Јави
У наследству се бавимо супер часовима или родитељским часовима и часовима детета. Ако морамо интермедијарно да приступимо члановима суперкласе, укључујући променљиве, методе или конструкторе, онда морамо да имамо неки механизам. Овај механизам приступа члановима основне класе обезбеђен је у Јави помоћу кључне речи „супер“.
Дакле, у којим сценаријима користимо кључну реч ‘супер’ у Јави?
У наставку су наведени сценарији у којима „супер“ кључна реч може бити корисна.
- Када класа супер / основна и пот / изведена класа имају иста имена за чланове, а ми желимо да приступимо члановима суперкласе, тада користимо кључну реч супер.
- Када желимо да приступимо конструктору суперкласе из подкласе, тада користимо кључну реч супер за позивање кључне речи суперкласе.
На горњој слици приказали смо наследну структуру. У основној као и изведеној класи имамо Стринг променљиву миСтр. У изведеномЦласс имамо функцију принтСтр (). У овој методи користили смо кључну реч ‘супер’ за приступ променљивој миСтр из основне класе.
На слици смо приказали стрелице које показују на променљиву члана основне класе и изведене променљиве класе.
Сада да видимо примере програмирања употребе кључне речи супер за приступ разним члановима суперкласе.
# 1) Приступите променљивој члана Суперцласс
Следећи Јава програм показује употребу кључне речи „супер“ за приступ променљивим из основне класе.
class Baseclass { String myStr; } class Subclass extends Baseclass { String myStr; public void printdetails() //Baseclass and Subclass have variables with same name { super.myStr = 'Super'; //refers to parent class member myStr = 'Sub'; System.out.println('Superclass myStr :' + super.myStr+' and Subclass myStr:'+myStr); } } class Main{ public static void main(String() args) { Subclass cobj = new Subclass(); cobj. printdetails (); } }
Излаз:
Горњи програм показује како приступити варијаблама члана основне класе из изведене класе када су променљиве члана декларисане истим именом и у основној и у изведеној класи.
Овде имамо променљиву миСтр која је декларисана у основној, као и изведена класа. У методи принтдетаилс, позивамо се на променљиву миСтр основне класе помоћу „супер.миСтр“, док се изведеној променљивој класе миСтр приступа директно без икаквог квалификатора.
# 2) Приступ Суперцласс Методу
Даље, видећемо како да позовемо метод основне класе када метода у основној класи и метода у изведеној класи имају иста имена.
Следећи програм то показује.
class Parent { String myStr; public void print() //parent class method { myStr = 'Parent class myStr'; System.out.println(myStr); } } class Child extends Parent { String myStr; public void print() //child class method with same name as parent { super.print(); //call Parent class print() method myStr = 'Child class myStr'; System.out.println(myStr); } } class Main{ public static void main(String() args) { Child c_obj = new Child(); c_obj.print (); } }
Излаз:
# 3) Приступ конструктору Суперцласс
Када наследимо једну класу од друге, имајте на уму да се конструктори не наслеђују.
Ако желимо да извршимо било које инструкције из конструктора суперкласе пре извршавања изведеног конструктора класе, онда такође можемо позвати конструктор суперкласе помоћу кључне речи ‘супер’.
За позивање конструктора суперкласе користимо позив методе.
супер (листа параметара ...)
ц и ц ++ разлика
Следећи метод показује приступ супер конструкторима у Јави.
class Parent { String myStr; public Parent(String name) //base class constructor { myStr = name; } } class Child extends Parent { String myStr; public Child(String name1, String name2) { super(name1); //call base class constructor and pass argument value this.myStr = name2; } public void printDetails() //print details of both constructors { System.out.println('From base class constructor: ' +super.myStr); System.out.println('From derived class constructor: ' + myStr); } } class Main{ public static void main(String() args) { Child cobj = new Child('Super constructor string','Child constructor string'); cobj.printDetails(); } }
Излаз:
Као што видимо из горњег програма, позвали смо конструктор суперкласе из изведеног конструктора класе. Имајте на уму да би по договору, кад год желимо да приступимо конструктору суперкласе, то требало да буде прва изјава у конструктору изведене класе.
Како основна класа има параметарски конструктор, такође преносимо одговарајући параметар супер позиву док позивамо конструктор.
Ако није изведен експлицитни позив супер конструктору као горе, компајлер увек аутоматски додаје имплицитни позив на супер (). Али имајте на уму да ће ово бити позив подразумеваном конструктору суперкласе.
Често постављана питања
П # 1) Шта је наслеђивање у Јави?
Одговор: Процес којим једна класа стиче својства и понашање друге класе назива се наслеђивање. У Јави једну класу наслеђује друга класа помоћу кључне речи ‘ектендс’.
Наслеђивање промовише поновну употребу кода, јер наслеђивањем можемо стећи и користити већ постојећа својства и понашање наслеђене класе, а да не морамо писати дуплицирани код.
П # 2) Зашто се наследство користи у Јави?
Одговор: Наслеђивање се углавном користи за побољшање могућности поновне употребе апликације. Користећи наслеђивање можемо користити готове класе у нашој апликацији. Не морамо писати свој код ако имамо спремну функционалност.
Друга употреба наслеђа је у замени метода. Да бисмо применили рунтиме полиморфизам, користимо наследство.
П # 3) Које су предности наслеђивања?
Одговор: Поновна употребљивост је кључна предност наследства. Дељење кода наслеђивањем такође резултира бољом читљивошћу и бољом организацијом кода.
Полиморфизам времена извођења такође можемо постићи заменом методе применом наследства.
П # 4) Које су карактеристике наслеђивања?
Одговор: Свака карактеристика или особина стечена од старије генерације врши се наслеђивањем. На пример, особина светлосног ока која се јавља у многим породицама пример је наследства.
Са програмског становишта, наслеђивање пружа особину поновне употребљивости и замене метода.
П # 5) Да ли је неопходно супер ()?
Одговор: Не. Јер ако не зовемо супер (), компајлер то имплицитно ради уместо нас. Али онда је имплицитно позивање супер () подразумевани конструктор основне класе. Дакле, ако нам треба параметарски конструктор из основне класе, онда бисмо га требали експлицитно позвати.
Закључак
У овом упутству смо представили концепт наслеђивања у Јави. Наслеђивање је процес стицања својстава и понашања једне класе у другој класи. Овде смо разговарали о основној дефиницији и терминологији коју користимо у наслеђивању.
Такође смо разговарали о односима Ис-А и Хас-А у Јави. Наслеђе се користи за спровођење односа Ис-А.
Затим смо разговарали о кључним речима „ектендс“ и „супер“ у Јави које се користе у вези са наслеђивањем. Ектендс се користи за примену наследства. Кључна реч супер користи се за упућивање на конструктор основне методе, методу или променљиву из изведене класе.
=> Овде погледајте савршен водич за обуку за Јава.
Препоручено читање
- Водич за класу Јава Сцаннер са примерима
- Шта је Јава Вецтор | Водич за Јава векторску класу са примерима
- Јава Енум: Водич за набрајање Јава са примерима
- Метода дужине Јава низа () Метода са примерима
- Водич за Јава Флоат са примерима програмирања
- Наслеђивање у Ц ++
- Врсте наслеђивања у Ц ++
- Питхон ООПс концепти (класе Питхон, објекти и наслеђивање)