logo

Наслеђивање у Јави

  1. Наслеђе
  2. Врсте наслеђа
  3. Зашто вишеструко наслеђивање није могуће у Јави у случају класе?

Наслеђивање у Јави је механизам у коме један објекат стиче сва својства и понашања родитељског објекта. То је важан део ООПс (Објектно оријентисани систем програмирања).

Идеја која стоји иза наслеђивања у Јави је да можете креирати нове класе који су изграђени на постојећим класама. Када наследите постојећу класу, можете поново да користите методе и поља родитељске класе. Штавише, можете додати нове методе и поља у своју тренутну класу.

Наслеђе представља ИС-А однос који је познат и као а родитељ-дете однос.

Зашто користити наслеђивање у Јави

Термини који се користе у наслеђивању

    Класа:Класа је група објеката који имају заједничка својства. То је шаблон или нацрт из којег се креирају објекти.Подкласа/Класа детета:Поткласа је класа која наслеђује другу класу. Такође се назива и изведена класа, проширена класа или подређена класа.Супер класа/разред родитеља:Суперкласа је класа одакле поткласа наслеђује карактеристике. Такође се назива базна класа или родитељска класа.Поновна употреба:Као што назив наводи, поновна употреба је механизам који вам омогућава да поново користите поља и методе постојеће класе када креирате нову класу. Можете користити иста поља и методе које су већ дефинисане у претходној класи.

Синтакса Јава наслеђа

 class Subclass-name extends Superclass-name { //methods and fields } 

Тхе проширује кључну реч означава да правите нову класу која је изведена из постојеће класе. Значење 'проширује' је повећање функционалности.

дугме у централном цсс-у

У терминологији Јаве, класа која је наслеђена назива се родитељ или суперкласа, а нова класа се назива дете или поткласа.


Пример наслеђивања Јава

Наслеђивање у Јави

Као што је приказано на горњој слици, Програмер је поткласа, а Емплоиее је надкласа. Однос између две класе је Програмер ИС-А Емплоиее . То значи да је програмер врста запосленог.

вук против лисице
 class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } } 
Тестирајте одмах
 Programmer salary is:40000.0 Bonus of programmer is:10000 

У горњем примеру, објекат Програмер може да приступи пољу сопствене класе као и класе Емплоиее, односно поновне употребе кода.


Типови наслеђивања у Јави

На основу класе, у Јави могу постојати три типа наслеђивања: једностепено, вишестепено и хијерархијско.

У јава програмирању, вишеструко и хибридно наслеђивање је подржано само преко интерфејса. Касније ћемо научити о интерфејсима.

Врсте наслеђивања у Јави

Напомена: Вишеструко наслеђивање није подржано у Јави кроз класу.

Када једна класа наследи више класа, то је познато као вишеструко наслеђивање. На пример:

Вишеструко наслеђивање у Јави

Пример појединачног наслеђа

Када класа наследи другу класу, позната је као а једно наслеђе . У примеру датом у наставку, класа Дог наслеђује класу Анимал, тако да постоји једно наслеђе.

Датотека: ТестИнхеританце.јава

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }} 

Излаз:

 barking... eating... 

Пример наслеђивања на више нивоа

Када постоји ланац наслеђа, то је познато као вишестепено наслеђе . Као што можете видети у примеру датом у наставку, класа БабиДог наслеђује класу Дог која поново наслеђује класу Анимал, тако да постоји наслеђивање на више нивоа.

то стринг метода у Јави

Датотека: ТестИнхеританце2.јава

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }} 

Излаз:

 weeping... barking... eating... 

Пример хијерархијског наслеђа

Када две или више класа наслеђују једну класу, то је познато као хијерархијско наслеђе . У примеру датом испод, класе Дог и Цат наслеђују класу Анимал, тако да постоји хијерархијско наслеђе.

Датотека: ТестИнхеританце3.јава

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }} 

Излаз:

 meowing... eating... 

П) Зашто вишеструко наслеђивање није подржано у Јави?

Да би се смањила сложеност и поједноставио језик, вишеструко наслеђивање није подржано у Јави.

јава приоритетни ред

Размотрите сценарио где су А, Б и Ц три класе. Ц класа наслеђује А и Б класе. Ако А и Б класе имају исти метод и ви га позивате из објекта подређене класе, биће нејасноћа у позивању методе А или Б класе.

Пошто су грешке у времену превођења боље од грешака током извођења, Јава приказује грешку у времену превођења ако наследите 2 класе. Дакле, без обзира да ли имате исти или другачији метод, доћи ће до грешке у времену компајлирања.

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
Тестирајте одмах
 Compile Time Error