logo

Vrste nasljeđivanja u Javi

Nasljedstvo je najmoćnija značajka objektno orijentiranog programiranja. Omogućuje nam da naslijedimo svojstva jedne klase u drugu klasu. U ovom odjeljku ćemo raspravljati vrste nasljeđivanja u Javi detaljan s primjerima iz stvarnog života. Također, izradit ćemo Java programe za implementaciju koncepta različitih tipova nasljeđivanja.

Nasljedstvo

Nasljedstvo je mehanizam pokretanja nove klase iz postojeće klase. Postojeća (stara) klasa je poznata kao osnovna klasa ili super klasa ili razred roditelja . Nova klasa je poznata kao a izvedena klasa ili podrazred ili razred djeteta . Omogućuje nam korištenje svojstava i ponašanja jedne klase (roditelj) u drugoj klasi (dijete).

Klasa čija se svojstva nasljeđuju poznata je kao razred roditelja a klasa koja nasljeđuje svojstva roditeljske klase poznata je kao razred djeteta . Dakle, uspostavlja odnos između klase roditelja i djeteta koji je poznat kao roditelj-dijete ili Je odnos.

višeredni komentar powershell

Pretpostavimo da postoje dvije imenovane klase Otac i Dijete i želimo naslijediti svojstva klase Otac u klasi Dijete. To možemo postići korištenjem proteže se ključna riječ.

 //inherits the properties of the Father class class Child extends Father { //functionality } 

Vrste nasljeđivanja u Javi

Kada bismo trebali koristiti nasljeđivanje?

Nasljedstvo osigurava ponovno korištenje koda, posebno kada postoji velika količina koda za ponovnu upotrebu. Također uspostavlja odnos između različitih klasa koji je poznat kao a Je odnos. Možemo ga također koristiti ako želimo postići nadjačavanje metode .

Bodovi za pamćenje

  • Konstruktor se ne može naslijediti u Javi.
  • Privatni članovi se ne nasljeđuju u Javi.
  • Cikličko nasljeđivanje nije dopušteno u Javi.
  • Dodijeli nadređenu referencu podređenim objektima.
  • Konstruktori se izvršavaju zbog super() prisutnog u konstruktoru.

Vrste nasljeđivanja

Java podržava sljedeće četiri vrste nasljeđivanja:

  • Jedno nasljeđivanje
  • Nasljeđivanje na više razina
  • Hijerarhijsko nasljeđivanje
  • Hibridno nasljeđivanje
Vrste nasljeđivanja u Javi

Napomena: višestruko nasljeđivanje nije podržano u Javi.

Razmotrimo svaki s odgovarajućim primjerom.

Jedno nasljeđivanje

Kod jednostrukog nasljeđivanja, potklasa je izvedena iz samo jedne super klase. Nasljeđuje svojstva i ponašanje jednoroditeljske klase. Ponekad je poznat i kao jednostavno nasljeđivanje .

Vrste nasljeđivanja u Javi

Na gornjoj slici Employee je nadređena klasa, a Executive je podređena klasa. Klasa Executive nasljeđuje sva svojstva klase Employee.

Implementirajmo jedinstveni mehanizam nasljeđivanja u Java programu.

Izvršni.java

 class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } } 

Izlaz:

 Total salary credited: 414408.0 Bonus of six months: 18000.0 

Nasljeđivanje na više razina

U višerazinsko nasljeđivanje , klasa je izvedena iz klase koja je također izvedena iz druge klase naziva se višerazinsko nasljeđivanje. Jednostavnim riječima, možemo reći da se klasa koja ima više od jedne roditeljske klase naziva nasljeđivanjem na više razina. Imajte na umu da razredi moraju biti na različitim razinama. Dakle, postoji jedna osnovna klasa i jedna izvedena klasa, ali više srednjih osnovnih klasa.

ograničenja e-bankarstva
Vrste nasljeđivanja u Javi

Na gornjoj slici klasa Marks nasljeđuje članove ili metode klase Studenti. Klasa Sport nasljeđuje članove klase Marks. Stoga je razred Student nadređeni razred Ocjene, a razred Ocjene nadređeni razredu Sportovi. Dakle, klasa Sports implicitno nasljeđuje svojstva Studenta zajedno s klasom Marks.

Implementirajmo mehanizam nasljeđivanja na više razina u Java programu.

MultilevelInheritanceExample.java

 //super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } } 

Izlaz:

 registration number= 0987 marks= 78.0 score= 68.7 

Hijerarhijsko nasljeđivanje

Ako je više klasa izvedeno iz jedne osnovne klase, ona se poziva hijerarhijsko naslijeđe .

js globalna varijabla
Vrste nasljeđivanja u Javi

Na gornjoj slici, klase Science, Commerce i Arts nasljeđuju jednu nadređenu klasu pod nazivom Student.

Implementirajmo mehanizam hijerarhijskog nasljeđivanja u Java programu.

HierarchicalInheritanceExample.java

 //parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } } 

Izlaz:

 The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked. 

Hibridno nasljeđivanje

Hibridna sredstva sastoje se od više od jednog. Hibridno nasljeđivanje je kombinacija dva ili više tipova nasljeđivanja.

Vrste nasljeđivanja u Javi

Na gornjoj slici, djed je super klasa. Klasa Otac nasljeđuje svojstva klase GrandFather. Budući da otac i djed predstavljaju jedinstveno nasljeđe. Nadalje, klasu Oca nasljeđuje klasa Sin i Kći. Tako Otac postaje roditeljska klasa za Sina i Kćer. Ove klase predstavljaju hijerarhijsko nasljeđe. U kombinaciji, označava hibridno nasljeđe.

Implementirajmo mehanizam hibridnog nasljeđivanja u Java programu.

java dobiti trenutno vrijeme

Kći.java

 //parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } } 

Izlaz:

 I am daughter. 

Višestruko nasljeđivanje (nije podržano)

Java ne podržava višestruko nasljeđivanje zbog dvosmislenosti. Na primjer, razmotrite sljedeći Java program.

Demo.java

 class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } } 

Gornji kod daje pogrešku jer kompajler ne može odlučiti koju metodu message() treba pozvati. Zbog tog razloga, Java ne podržava višestruko nasljeđivanje na razini klase, ali se može postići putem sučelje .