Herència és la característica més potent de la programació orientada a objectes. Ens permet heretar les propietats d'una classe en una altra classe. En aquesta secció, parlarem Tipus d'herència a Java aprofundir amb exemples de la vida real. Així mateix, crearem programes Java per implementar el concepte de diferents tipus d'herència.
Herència
Herència és un mecanisme per impulsar una nova classe a partir d'una classe existent. La classe existent (antiga) es coneix com classe base o super classe o classe de pares . La nova classe es coneix com a classe derivada o subclasse o classe infantil . Ens permet utilitzar les propietats i el comportament d'una classe (pare) en una altra classe (fill).
Es coneix com a classe les propietats de la qual s'hereten classe de pares i una classe que hereta les propietats de la classe pare es coneix com classe infantil . Així, estableix una relació entre classe pare i fill que es coneix com a pare-fill o És un relació.
sql recompte diferent
Suposem que hi ha dues classes anomenades Pare i Nen i volem heretar les propietats de la classe Father a la classe Child. Això ho podem aconseguir utilitzant el s'estén paraula clau.
//inherits the properties of the Father class class Child extends Father { //functionality }
Quan hem d'utilitzar l'herència?
L'herència proporciona el reutilitzabilitat de codi, especialment quan hi ha una gran escala de codi per reutilitzar. També estableix la relació entre diferents classes que es coneix com a És un relació. També el podem utilitzar si ho volem aconseguir anul·lació del mètode .
Punts a recordar
- El constructor no es pot heretar a Java.
- Els membres privats no s'hereten a Java.
- L'herència cíclica no està permesa a Java.
- Assigna una referència pare als objectes fills.
- Els constructors s'executen a causa del super() present al constructor.
Tipus d'herència
Java admet els quatre tipus d'herència següents:
- Herència única
- Herència multinivell
- Herència jeràrquica
- Herència híbrida
Nota: l'herència múltiple no s'admet a Java.
Parlem de cadascun amb l'exemple adequat.
Herència única
En l'herència única, una subclasse es deriva només d'una superclasse. Hereta les propietats i el comportament d'una classe monoparental. De vegades també es coneix com simple herència .
A la figura anterior, l'empleat és una classe principal i l'executiu és una classe secundaria. La classe Executive hereta totes les propietats de la classe Employee.
Implementem el mecanisme d'herència única en un programa Java.
Executive.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); } }
Sortida:
Total salary credited: 414408.0 Bonus of six months: 18000.0
Herència multinivell
En herència multinivell , una classe es deriva d'una classe que també es deriva d'una altra classe s'anomena herència multinivell. En paraules senzilles, podem dir que una classe que té més d'una classe pare s'anomena herència multinivell. Tingueu en compte que les classes han de ser de diferents nivells. Per tant, existeix una única classe base i una única classe derivada però múltiples classes base intermèdies.
L'actriu Rubina Dilaik
A la figura anterior, les notes de classe hereten els membres o mètodes de la classe Estudiants. La classe Sports hereta els membres de la classe Marques. Per tant, la classe d'alumnes és la classe principal de la classe Marks i la classe Marks és la classe pare de la classe Esports. Per tant, la classe Sports hereta implícitament les propietats de l'estudiant juntament amb les notes de classe.
Implementem el mecanisme d'herència multinivell en un programa Java.
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(); } }
Sortida:
registration number= 0987 marks= 78.0 score= 68.7
Herència jeràrquica
Si es deriven diverses classes d'una única classe base, s'anomena herència jeràrquica .
elimina l'últim caràcter de la cadena
A la figura anterior, les classes de Ciència, Comerç i Arts hereten una classe parental única anomenada Estudiant.
Implementem el mecanisme d'herència jeràrquica en un programa Java.
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(); } }
Sortida:
The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked.
Herència híbrida
Els mitjans híbrids consisteixen en més d'un. L'herència híbrida és la combinació de dos o més tipus d'herència.
A la figura anterior, l'avi és una súper classe. La classe Father hereta les propietats de la classe GrandFather. Ja que el pare i l'avi representen l'herència única. A més, la classe del Pare és heretada per la classe del Fill i la Filla. Així, el Pare es converteix en la classe de pares per a Fill i Filla. Aquestes classes representen l'herència jeràrquica. En conjunt, denota l'herència híbrida.
Implementem el mecanisme d'herència híbrid en un programa Java.
és igual a java
Daughter.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(); } }
Sortida:
I am daughter.
Herència múltiple (no compatible)
Java no admet múltiples herències a causa de l'ambigüitat. Per exemple, considereu el següent programa Java.
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(); } }
El codi anterior dóna error perquè el compilador no pot decidir quin mètode message() s'ha d'invocar. Per aquest motiu, Java no admet múltiples herències a nivell de classe, però es pot aconseguir mitjançant un interfície .