- Erfenis
- Soorten erfenis
- Waarom is meervoudige overerving niet mogelijk in Java in het geval van klasse?
Erfenis op Java is een mechanisme waarbij één object alle eigenschappen en gedragingen van een ouderobject verwerft. Het is een belangrijk onderdeel van OOP's (Objectgeoriënteerd programmeersysteem).
Het idee achter overerving in Java is dat je nieuwe kunt creëren klassen die voortbouwen op bestaande klassen. Wanneer u overerft van een bestaande klasse, kunt u methoden en velden van de bovenliggende klasse opnieuw gebruiken. Bovendien kunt u ook nieuwe methoden en velden aan uw huidige klasse toevoegen.
Erfenis vertegenwoordigt de IS-A-relatie die ook bekend staat als een ouder-kind relatie.
Waarom overerving in Java gebruiken?
- Voor Methode overschrijven (Dus runtime-polymorfisme kan worden behaald).
- Voor herbruikbaarheid van codes.
Termen die worden gebruikt in de erfenis
De syntaxis van Java-overerving
class Subclass-name extends Superclass-name { //methods and fields }
De breidt trefwoord uit geeft aan dat u een nieuwe klasse maakt die is afgeleid van een bestaande klasse. De betekenis van 'uitbreiden' is het vergroten van de functionaliteit.
afdrukarray in Java
In de terminologie van Java wordt een klasse die wordt geërfd een ouder- of superklasse genoemd, en de nieuwe klasse wordt een kind- of subklasse genoemd.
Voorbeeld van Java-overerving
Zoals weergegeven in de bovenstaande afbeelding, is Programmer de subklasse en is Employee de superklasse. De relatie tussen de twee klassen is Programmeur IS-A Medewerker . Het betekent dat Programmeur een type Werknemer is.
beperkingen van elektronisch bankieren
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); } }Test het nu
Programmer salary is:40000.0 Bonus of programmer is:10000
In het bovenstaande voorbeeld heeft het Programmer-object toegang tot het veld van zowel de eigen klasse als de klasse Werknemer, d.w.z. herbruikbaarheid van code.
Soorten overerving in Java
Op basis van klasse kunnen er drie soorten overerving in Java zijn: single, multilevel en hiërarchisch.
Bij Java-programmering wordt meervoudige en hybride overerving alleen via de interface ondersteund. Over interfaces zullen we later leren.
Opmerking: Meervoudige overerving wordt niet ondersteund in Java via klasse.
Wanneer één klasse meerdere klassen erft, staat dit bekend als meervoudige overerving. Bijvoorbeeld:
Voorbeeld van enkele erfenis
Wanneer een klasse een andere klasse erft, staat dit bekend als a enkele erfenis . In het onderstaande voorbeeld erft de klasse Dog de klasse Animal, dus er is sprake van een enkele overerving.
mooiste glimlach
Bestand: 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(); }}
Uitgang:
barking... eating...
Voorbeeld van overerving op meerdere niveaus
Wanneer er sprake is van een keten van overerving, heet dit overerving op meerdere niveaus . Zoals je in het onderstaande voorbeeld kunt zien, erft de klasse BabyDog de klasse Dog, die weer de klasse Animal erft, dus er is sprake van overerving op meerdere niveaus.
Bestand: 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(); }}
Uitgang:
weeping... barking... eating...
Voorbeeld van hiërarchische erfenis
Wanneer twee of meer klassen één klasse erven, staat dit bekend als hiërarchische erfenis . In het onderstaande voorbeeld erven de klassen Dog en Cat de klasse Animal, dus er is sprake van hiërarchische overerving.
Bestand: TestInheritance3.java
Hoe de applicatie zichtbaar te maken in Android
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 }}
Uitgang:
meowing... eating...
V) Waarom wordt meervoudige overerving niet ondersteund in Java?
Om de complexiteit te verminderen en de taal te vereenvoudigen, wordt meervoudige overerving niet ondersteund in Java.
Beschouw een scenario waarin A, B en C drie klassen zijn. De C-klasse erft de A- en B-klassen. Als klassen A en B dezelfde methode hebben en u deze aanroept vanuit een onderliggend klasseobject, zal er onduidelijkheid bestaan over het aanroepen van de methode van klasse A of B.
Omdat compilatiefouten beter zijn dan runtimefouten, geeft Java een compilatiefout weer als u twee klassen erft. Dus of u nu dezelfde of een andere methode gebruikt, er zal een compileerfout optreden.
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? } }Test het nu
Compile Time Error