Nasljedstvo u Java (s primjerom)

Što je nasljeđivanje?

Nasljeđivanje je mehanizam u kojem jedna klasa stječe svojstvo druge klase. Na primjer, dijete nasljeđuje osobine svojih roditelja. S nasljeđivanjem možemo ponovno koristiti polja i metode postojeće klase. Stoga, nasljeđivanje olakšava ponovnu upotrebu i važan je koncept OOP-a.

U čemu je nasljedstvo Java?

Java Nasljeđivanje je mehanizam u kojem jedna klasa stječe svojstvo druge klase. U Java, kada između dvije klase postoji odnos "Je-A", koristimo nasljeđivanje. Roditeljska klasa naziva se super klasa, a naslijeđena klasa se naziva podklasa. Ključna riječ extends koristi podklasa za nasljeđivanje značajki super klase. Nasljeđivanje je važno jer dovodi do ponovne upotrebe koda.

Java Sintaksa nasljeđivanja:

class subClass extends superClass  
{  
   //methods and fields  
} 

Vrste nasljeđivanja u Java

Ovdje su različite vrste nasljeđivanja u Java:

  1. Nasljeđivanje pojedinačno
  2. Višestruko nasljeđivanje
  3. Višerazinsko nasljeđivanje
  4. Hijerarhijsko nasljeđivanje
  5. Hibridno nasljeđivanje

1. Jedno nasljeđivanje:

Kod pojedinačnog nasljeđivanja jedna klasa proširuje drugu klasu (samo jedna klasa).

Jedno nasljeđe u Java
Nasljeđivanje pojedinačno

U gornjem dijagramu, klasa B proširuje samo klasu A. Klasa A je super klasa, a klasa B je podklasa.

2. Višestruko nasljeđivanje:

Višestruko nasljeđivanje jedno je od nasljeđivanja u Java vrste gdje jedna klasa proširuje više od jedne klase. Java ne podržava višestruko nasljeđivanje.

Višestruko nasljeđivanje u Java
Java Višestruko nasljeđivanje

Prema gornjem dijagramu, klasa C proširuje klasu A i klasu B.

3. Višerazinsko nasljeđivanje:

U nasljeđivanju na više razina, jedna klasa može naslijediti od izvedene klase. Dakle, izvedena klasa postaje osnovna klasa za novu klasu.

Višerazinsko nasljeđivanje u Java
Višerazinsko nasljeđivanje

Kao što je prikazano na dijagramu, klasa C je podklasa B, a B je podklasa klase A.

4. Hijerarhijsko nasljeđivanje:

Kod hijerarhijskog nasljeđivanja, jednu klasu nasljeđuju mnoge podklase.


Hijerarhijsko nasljeđivanje u Java
Hijerarhijsko nasljeđivanje

Kao u gornjem primjeru, klasa B, C i D nasljeđuju istu klasu A.

5. Hibridno nasljeđivanje:

Hibridno nasljeđivanje je jedan od tipova nasljeđivanja u Java što je kombinacija jednostrukog i višestrukog nasljeđivanja.


Hibridno nasljeđivanje
Hibridno nasljeđivanje

Kao u gornjem primjeru, svi javni i zaštićeni članovi klase A nasljeđuju se u klasu D, prvo putem klase B, a zatim putem klase C.

Bilješka: Java ne podržava hibridno/višestruko nasljeđivanje

Nasljedstvo u Java Primjer

Evo primjera nasljeđivanja u Java:


Primjer Java Nasljeđivanje
Java Primjer nasljeđivanja

class Doctor {
 void Doctor_Details() {
  System.out.println("Doctor Details...");
 }
}

class Surgeon extends Doctor {
 void Surgeon_Details() {
  System.out.println("Surgen Detail...");
 }
}

public class Hospital {
 public static void main(String args[]) {
  Surgeon s = new Surgeon();
  s.Doctor_Details();
  s.Surgeon_Details();
 }
}

Super ključna riječ

Ključna riječ super slična je ključnoj riječi "ovo". Ključna riječ super može se koristiti za pristup bilo kojem članu podataka ili metodama roditeljske klase. Ključna riječ Super može se koristiti na varijabla, metoda i razina konstruktora.

Sintaksa:

super.<method-name>();

Također provjerite: - ovu ključnu riječ u Java: Što je i kako se koristi s primjerom

Naučite nasljeđivanje u OOP-u s primjerom

Razmotrite istu bankovnu aplikaciju iz prethodni primjer.

Trebali bismo otvoriti dvije različite vrste računa, jedan za štednju i drugi za provjeru (poznat i kao tekući).

Nasljeđivanje u OOP-u

Usporedimo i proučimo kako možemo pristupiti kodiranju iz a strukturirana i objektno orijentirana programska perspektiva.

Strukturni pristup: U strukturiranom programiranju stvorit ćemo dvije funkcije –

  1. Jedan za povlačenje
  2. A drugi za depozitnu akciju.

Budući da rad ovih funkcija ostaje isti na svim računima.

Nasljeđivanje u OOP-ovima

OOP pristup: Dok koristite OOP-ovi programski pristup. Stvorili bismo dvije klase.

  • Svaki ima implementaciju funkcija polaganja i isplate.
  • Ovo će biti suvišan dodatni posao.

Nasljeđivanje u OOP-ovima

Zahtjev za promjenu u softveru

Sada postoji promjena u specifikaciji zahtjeva za nešto što je tako uobičajeno u softverskoj industriji. Trebali biste dodati funkcionalni privilegirani bankovni račun s mogućnošću prekoračenja. Za pozadinu, prekoračenje je mogućnost u kojoj možete podići iznos veći od raspoloživog stanja na vašem računu.

Zahtjev za promjenu u softveru

Strukturni pristup: Koristeći funkcionalni pristup, moram modificirati svoju funkciju povlačenja, koja je već testirana i osnovana. I dodavanje metode kao što je dolje će se pobrinuti za nove zahtjeve.

Zahtjev za promjenu u softveru

OOP pristup: Koristeći OOP pristup, samo trebate napisati novu klasu s jedinstvenom implementacijom funkcije povlačenja. Nikada nismo dirali testirani dio koda.

Zahtjev za promjenu u softveru

Još jedan zahtjev za promjenu

Što ako se zahtjev dodatno promijeni? Želite dodati račun kreditne kartice s vlastitim jedinstvenim zahtjevom depozita.

Zahtjev za višestrukim promjenama u softveru

Strukturni pristup: Koristeći strukturni pristup, morate ponovno promijeniti testirani dio depozitnog koda.

Strukturni pristup zahtjevu za višestrukim promjenama u softveru

OOP pristup: Ali koristeći objektno orijentirani pristup, samo ćete stvoriti novu klasu sa svojom jedinstvenom implementacijom metode depozita (označeno crvenom bojom na slici ispod). Dakle, iako se strukturno programiranje u početku čini kao jednostavan pristup, OOP dugoročno pobjeđuje.

OOP-ov pristup zahtjevu za višestrukim promjenama

Prednosti nasljeđivanja u OOP-ovima

Ali netko može tvrditi da u svim klasama imate ponovljene dijelove koda.

Da biste to prevladali, kreirate nadređenu klasu, recimo "račun" i implementirate istu funkciju polaganja i isplate. I učinite podređene klase naslijeđenom klasom "računa". Tako da će imati pristup funkcijama povlačenja i polaganja u klasi računa. Funkcije se ne moraju implementirati zasebno. Ovo je Nasljeđivanje u Javi. .

Prednosti nasljeđivanja u OOP-ovima

Prednosti nasljeđivanja u OOP-ovima