what is inheritance java tutorial with examples
Acest tutorial explică conceptul de moștenire în Java, termeni asociați precum cuvinte cheie „extinde” și „super”, subclasă, superclasă, relații Is-A, HAS-A etc.:
După ce am aflat despre cei trei piloni ai POO și anume, abstractizarea, încapsularea și polimorfismul în Java, ajungem la ultimul pilon al POO, adică moștenirea.
Începând cu acest tutorial, vom discuta moștenirea în Java în următoarele câteva tutoriale.
=> Citiți seria Easy Training Java.
Ce veți învăța:
Moștenirea în Java
Moștenirea în Java poate fi definită ca o tehnică sau proces în care un obiect al unei clase dobândește comportamentul și proprietățile unui alt obiect. Acest lucru se face prin moștenirea clasei sau stabilirea unei relații între două clase.
De exemplu, o broască este un amfibian. La fel ca alte animale din clasa amfibienilor, broasca ar putea avea multe caracteristici comune celorlalte animale. Deci, aici un amfibian este o specie și animalele ca broaștele sunt membrii săi.
Dacă trebuie să reprezentăm speciile de amfibieni și membrii acesteia într-o reprezentare software folosind OOP, atunci ceea ce vom face este să dezvoltăm o clasă „Amfibian” care să conțină proprietăți sau comportament comun amfibienilor în general.
În acest fel nu trebuie să duplicăm proprietățile și comportamentul comun pentru fiecare animal amfibian pe care îl descriem. Vom crea în mod direct câte o clasă pentru animale amfibiene și moștenim din clasa amfibienilor așa cum se arată mai jos.
Deci, o idee generală din spatele caracteristicii „Moștenire” este că putem crea noi clase prin moștenirea din clasele deja existente. Prin moștenirea din clasele deja existente, ajungem să folosim proprietățile și comportamentul acestor clase. În plus, putem adăuga mai multe proprietăți și / sau comportament în noua noastră clasă.
Funcția de moștenire descrie un „ părinte-copil ”Conexiune sau relație în Java. Clasa de la care este moștenită noua clasă se numește „ Clasa părinte ”În timp ce noua clasă este numită„ Clasa pentru copii ”.
Moștenirea este utilizată în principal:
- Pentru suprasolicitarea metodei astfel încât să putem realiza polimorfism de rulare .
- La refolosiți codul . Prin moștenirea din clasele deja existente, asigurăm reutilizare de cod.
Terminologie comună utilizată în moștenire
- Reutilizare: Mecanism prin care noile clase reutilizează câmpurile sau proprietățile și metodele unei clase existente.
- Clasă: O clasă este o colecție de obiecte care au proprietăți comune. O clasă poate fi vizualizată ca un șablon sau ca tipar albastru pentru obiecte.
- Subclasă / Clasă pentru copii: O clasă care moștenește de la o altă clasă este o subclasă sau o clasă copil sau o clasă derivată.
- Super Clasa / Clasa părinte: O clasă care este moștenită de o altă clasă pentru a dobândi proprietăți și metode se numește clasă Parent sau superclasă sau clasă de bază.
Următoarea ierarhie a moștenirii este un exemplu care arată o superclasă și o subclasă.
Avem o clasă de angajați cu câmpuri OrganisationName și EmployeeId. Poate avea și alte câmpuri, cum ar fi numele angajatului, departamentul și alte detalii despre angajați.
Apoi obținem o altă clasă numită „SoftwareDeveloper” cu salariul și avantajele câmpului. Clasa SoftwareDeveloper moștenește din clasa Angajat și, prin urmare, dobândește și proprietățile clasei Angajat.
Așa cum se arată în diagrama de mai sus, aici Clasa angajați este o clasă Super sau de bază, iar SoftwareDeveloper este o subclasă sau o clasă derivată.
„Extinde” cuvânt cheie în Java
În Java, cuvântul cheie „extinde” este folosit pentru a moșteni clasa.
Sintaxa generală a moștenirii Java este dată mai jos:
class SubClass extends SuperClass { //subclass methods and fields }
După cum se arată mai sus, cuvântul cheie „extends” apare după numele clasei în sintaxa declarației clasei.
Cuvântul cheie „extinde” ne arată că creăm o nouă clasă „SubClass” care va moșteni proprietățile și comportamentul de la „SuperClass”. Cu alte cuvinte, cuvântul cheie extinde indică faptul că construim o nouă clasă SubClass pe funcționalitatea existentă a SuperClass.
Moștenirea implementată cu cuvântul cheie „extinde” este moștenirea clasei. În următorul tutorial, vom discuta un alt cuvânt cheie „instrumente” cu ajutorul căruia putem moșteni interfețe.
Un exemplu al clasei Employee-SoftwareDeveloper pe care l-am explicat mai sus poate fi reprezentat ca:
class Employee{ String OrganizationName; int EmployeeId; } class SoftwareDeveloper extends Employee{ float Salary; float Perks; }
Relația IS-A ȘI HAS-A
Luați în considerare următoarea structură de clasă:
class Mammal{ } class Cow extends Mammal{ }
Deci, cum putem interpreta structura de mai sus? Pe măsură ce clasa Vaca extinde sau moștenește mamiferul, putem spune „Vaca ESTE A Mamifer ”sau„ Vacă ESTE Un fel de Mamifer'. Prin urmare, ori de câte ori exprimăm astfel de relații, acea relație particulară este relația „IS_A”.
În structura de mai sus, am folosit ierarhia moștenirii pentru a exprima faptul că un fel este de alt tip. Deci, în structura de mai sus, am folosit o moștenire pentru a indica relația dintre vacă și mamifer.
În mod similar, putem exprima câteva relații IS-A după cum urmează:
Dat mai sus sunt câteva dintre exemplele comune de relații pe care le putem exprima folosind moștenirea în Java.
În general, relațiile IS-A pot fi exprimate folosind moștenirea.
Acum, să vedem exemplul de mai jos:
În diagrama de mai sus, vedem că un vehicul are două părți, adică motorul și frâna. Deci, cum putem pune acest scenariu în cuvinte?
Putem spune că „un vehicul conține un motor și un vehicul conține o frână ”.
Deci, ceea ce exprimăm aici nu este relația „IS-A”, ci o relație de izolare în care specificăm un obiect ca parte a unui alt obiect.
echipa fundație server management de proiect agil
În exemplul de mai sus, un motor este un parte a vehicul. Nu este un „ cam ”Vehicul. Acesta este ' ARE O ”Sau relația de izolare sau compoziție în Java. Relația Has-a în Java este exprimată prin includerea unui obiect ca membru al clasei.
Deci, dacă urmăm același exemplu de vehicul de mai sus, atunci îl putem exprima ca mai jos:
class Engine{ } class Brake { } class Vehicle{ Engine e; Brake b; }
Deci un Vehicul are motor și frână. Prin exprimarea relației în modul de mai sus, nu ne interesează implementarea internă a motorului sau a frânei. Clasa de vehicule va informa clasele de motoare și frâne despre ce este necesar și aceste clase le vor oferi.
La fel ca relația IS-A, relația HAS-A este utilă și în refolosirea codului.
În acest tutorial, vom discuta în detaliu despre moștenire (IS-A) și în următorul tutorial, vom discuta despre Conținere sau Compoziție (HAS-A).
Exemplu de moștenire Java
Să implementăm un exemplu simplu în Java pentru a demonstra moștenirea.
//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 } }
Ieșire:
Programul de mai sus prezintă un exemplu simplu de moștenire. Este declarată o bază de clasă cu o singură metodă. Apoi este declarată o altă clasă DerivedClass care extinde BaseClass. Această clasă are, de asemenea, o singură metodă.
În metoda principală a programului, creăm un obiect DerivedClass și folosind acest obiect numim metoda BaseClass, precum și metoda DerivedClass.
Ieșirea arată mesajele tipărite prin ambele metode. Deoarece DerivedClass extinde metoda BaseClass și BaseClass este publică, este vizibilă pentru DerivedClass.
Cuvânt cheie „super” în Java
În Moștenire, ne ocupăm de superclase sau clase de părinți și clase de copii. Dacă trebuie să accesăm intermediar membrii superclasei, inclusiv variabile, metode sau constructori, atunci trebuie să avem un mecanism. Acest mecanism de accesare a membrilor clasei de bază este furnizat în Java folosind un cuvânt cheie „super”.
Deci, în ce scenarii folosim cuvântul cheie „super” în Java?
Mai jos sunt enumerate scenarii în care un cuvânt cheie „super” poate fi util.
- Când clasa super / bază și clasa sub / derivată au aceleași nume pentru membri și dorim să accesăm membrii superclasei, atunci folosim cuvântul cheie super.
- Când vrem să accesăm constructorul superclasei din subclasă, atunci folosim cuvântul cheie super pentru a invoca cuvântul cheie superclasă.
În figura de mai sus, am arătat o structură de moștenire. În clasa de bază, precum și derivată, avem o variabilă String myStr. În derivatClass, avem o funcție printStr (). În această metodă, am folosit cuvântul cheie „super” pentru a accesa variabila myStr din clasa de bază.
În figură, am arătat săgețile care indică variabila membru de clasă de bază și variabila de clasă derivată.
Acum să vedem exemplele de programare a utilizării cuvântului cheie super pentru a accesa diverși membri ai superclasei.
# 1) Acces la variabila de membru Superclass
Următorul program Java demonstrează utilizarea unui cuvânt cheie „super” pentru a accesa variabile din clasa de bază.
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 (); } }
Ieșire:
Programul de mai sus arată cum să accesați variabilele membre ale clasei de bază din clasa derivată atunci când variabilele membre sunt declarate cu același nume atât în clasa de bază, cât și în clasa derivată.
Aici avem variabila myStr care este declarată atât în clasa de bază, cât și în cea derivată. În metoda printdetails, ne referim la variabila myStr a clasei de bază folosind „super.myStr” în timp ce variabila de clasă derivată myStr este accesată direct fără niciun calificativ.
# 2) Accesați metoda Superclass
Apoi, vom vedea cum să apelăm metoda clasei de bază atunci când metoda din clasa de bază și metoda din clasa derivată au aceleași nume.
Următorul program demonstrează acest lucru.
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 (); } }
Ieșire:
# 3) Acces la Superclass Constructor
Când moștenim o clasă de la alta, rețineți că constructorii nu sunt moșteniți.
Dacă vrem să executăm orice instrucțiuni de la constructorii superclasei înainte de a executa constructorul clasei derivate, putem apela și constructorul superclasei folosind cuvântul cheie „super”.
Pentru apelarea constructorului de superclasă folosim metoda call.
super (lista parametrilor ...)
Următoarea metodă demonstrează accesul la super constructori în Java.
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(); } }
Ieșire:
După cum putem vedea din programul de mai sus, am numit constructorul superclasei din constructorul clasei derivate. Rețineți că, prin convenție, ori de câte ori dorim să accesăm constructorul superclasei, ar trebui să fie prima afirmație din constructorul clasei derivate.
Deoarece clasa de bază are un constructor parametrizat, trecem și parametrul corespunzător super apelului în timp ce apelăm constructorul.
Dacă nu există un apel explicit făcut super-constructor ca mai sus, atunci compilatorul adaugă întotdeauna un apel implicit la super () automat. Dar rețineți că acesta va fi un apel către constructorul implicit al superclasei.
întrebări frecvente
Q # 1) Ce este Moștenirea în Java?
Răspuns: Un proces prin care o clasă dobândește proprietățile și comportamentul altei clase se numește moștenire. În Java, o clasă este moștenită de o altă clasă folosind cuvântul cheie „extends”.
Moștenirea promovează reutilizarea codului, deoarece prin moștenire putem dobândi și utiliza proprietățile și comportamentul deja existente ale unei clase moștenite fără a fi nevoie să scriem cod duplicat.
Q # 2) De ce se folosește Moștenirea în Java?
Răspuns: Moștenirea este utilizată în principal pentru a îmbunătăți reutilizarea aplicației. Folosind moștenirea putem folosi clasele pregătite în aplicația noastră. Nu trebuie să ne scriem codul dacă avem funcționalitatea pregătită.
Cea de-a doua utilizare a moștenirii este în mod predominant. Pentru a implementa polimorfismul în timpul rulării, folosim moștenirea.
Î # 3) Care sunt avantajele moștenirii?
Răspuns: Reutilizarea este avantajul cheie al moștenirii. Partajarea codului prin moștenire are ca rezultat și o mai bună lizibilitate și o mai bună organizare a codului.
Putem realiza, de asemenea, polimorfismul de rulare prin metoda suprascriere folosind moștenirea.
Q # 4) Care sunt caracteristicile Moștenirii?
Răspuns: Orice caracteristică sau trăsătură dobândită de la generația mai veche se face prin moștenire. De exemplu, trăsătura ochiului luminos care apare în multe familii este un exemplu de moștenire.
Din punct de vedere al programării, moștenirea oferă caracteristica reutilizării și suprascrierea metodei.
Q # 5) Este super () necesar?
Răspuns: Nu. Pentru că dacă nu apelăm super (), compilatorul o face implicit pentru noi. Dar apoi invocarea implicită a super () este constructorul implicit al clasei de bază. Deci, dacă avem nevoie de un constructor parametrizat dintr-o clasă de bază, atunci ar trebui să-l numim în mod explicit.
Concluzie
În acest tutorial, am introdus conceptul de moștenire în Java. Moștenirea este procesul de dobândire a proprietăților și comportamentului unei clase dintr-o altă clasă. Am discutat aici definiția de bază și terminologia pe care o folosim în moștenire.
De asemenea, am discutat despre relațiile Is-A și Has-A în Java. Moștenirea este utilizată pentru a implementa o relație Is-A.
Apoi am discutat cuvintele cheie „extinde” și „super” în Java care sunt utilizate în legătură cu moștenirea. Extends este folosit pentru a implementa moștenirea. Cuvântul cheie super este utilizat pentru a se referi la constructorul, metoda sau variabila clasei de bază din clasa derivată.
implementare sortare fuziune c ++
=> Consultați aici Ghidul perfect de instruire Java.
Lectură recomandată
- Tutorial de clasă Java Scanner cu exemple
- Ce este Java Vector | Tutorial Java Vector Class cu exemple
- Java Enum: Tutorial de enumerare Java cu exemple
- Java String length () Metodă cu exemple
- Tutorial Java Float cu exemple de programare
- Moștenirea în C ++
- Tipuri de moștenire în C ++
- Concepte PyOP OOPs (clase Python, obiecte și moștenire)