Herència en Java és un mecanisme en el qual un objecte adquireix totes les propietats i comportaments d'un objecte pare. És una part important de OOPs (Sistema de programació orientada a objectes).
La idea darrere de l'herència a Java és que podeu crear nous classes que es construeixen a partir de les classes existents. Quan hereteu d'una classe existent, podeu reutilitzar mètodes i camps de la classe pare. A més, també podeu afegir nous mètodes i camps a la vostra classe actual.
L'herència representa el Relació IS-A que també es coneix com a pare-fill relació.
Per què utilitzar l'herència a Java
- Per Anulació del mètode (tan polimorfisme en temps d'execució es pot aconseguir).
- Per a la reutilització del codi.
Termes utilitzats en Herència
La sintaxi de l'herència de Java
class Subclass-name extends Superclass-name { //methods and fields }
El amplia la paraula clau indica que esteu creant una nova classe que deriva d'una classe existent. El significat de 'estén' és augmentar la funcionalitat.
creació de taules d'oracle
En la terminologia de Java, una classe que s'hereta s'anomena pare o superclasse, i la nova classe s'anomena fill o subclasse.
Exemple d'herència de Java
Tal com es mostra a la figura anterior, el programador és la subclasse i l'empleat és la superclasse. La relació entre les dues classes és Empleat programador IS-A . Vol dir que el programador és un tipus d'empleat.
llop contra guineu
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); } }Prova-ho ara
Programmer salary is:40000.0 Bonus of programmer is:10000
A l'exemple anterior, l'objecte Programador pot accedir al camp de la classe pròpia i de la classe Employee, és a dir, la reutilització del codi.
Tipus d'herència en java
En funció de la classe, hi pot haver tres tipus d'herència a Java: simple, multinivell i jeràrquica.
A la programació java, només s'admet l'herència múltiple i híbrida mitjançant la interfície. Més endavant coneixerem les interfícies.
Nota: L'herència múltiple no s'admet a Java mitjançant classe.
Quan una classe hereta diverses classes, es coneix com a herència múltiple. Per exemple:
Exemple d'herència única
Quan una classe hereta una altra classe, es coneix com a herència única . A l'exemple que es mostra a continuació, la classe Dog hereta la classe Animal, de manera que hi ha l'herència única.
Fitxer: TestInheritance.java
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(); }}
Sortida:
barking... eating...
Exemple d'herència multinivell
Quan hi ha una cadena d'herència, es coneix com herència multinivell . Com podeu veure a l'exemple que es mostra a continuació, la classe BabyDog hereta la classe Dog que torna a heretar la classe Animal, de manera que hi ha una herència multinivell.
com convertir una cadena a enter en java
Fitxer: TestInheritance2.java
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(); }}
Sortida:
weeping... barking... eating...
Exemple d'herència jeràrquica
Quan dues o més classes hereten una sola classe, es coneix com a herència jeràrquica . En l'exemple que es mostra a continuació, les classes de gos i gats hereten la classe Animal, de manera que hi ha una herència jeràrquica.
Fitxer: TestInheritance3.java
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 }}
Sortida:
meowing... eating...
P) Per què no s'admet l'herència múltiple a Java?
Per reduir la complexitat i simplificar el llenguatge, java no admet l'herència múltiple.
què és un sistema de fitxers Linux
Considereu un escenari on A, B i C són tres classes. La classe C hereta les classes A i B. Si les classes A i B tenen el mateix mètode i l'anomeneu des de l'objecte de classe fill, hi haurà ambigüitat per cridar el mètode de la classe A o B.
Com que els errors en temps de compilació són millors que els errors en temps d'execució, Java mostra errors en temps de compilació si hereteu 2 classes. Així, si teniu el mateix mètode o diferent, hi haurà un error de temps de compilació.
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? } }Prova-ho ara
Compile Time Error