what is inheritance java tutorial with examples
Deze tutorial legt het concept van overerving in Java uit, gerelateerde termen als ‘extends’ en ‘super’ keywords, subklasse, superklasse, Is-A, HAS-A relaties, enz .:
Na kennis te hebben gemaakt met de drie pijlers van OOP, namelijk abstractie, inkapseling en polymorfisme op Java, komen we bij de laatste pijler van OOP, namelijk overerving.
Beginnend met deze tutorial zullen we overerving in Java bespreken in de volgende paar tutorials.
Lees de Easy Java Training Series door.
Wat je leert:
Overerving in Java
Overerving in Java kan worden gedefinieerd als een techniek of proces waarbij een object van een klasse het gedrag en de eigenschappen van een ander object verwerft. Dit wordt gedaan door de klasse te erven of een relatie tussen twee klassen tot stand te brengen.
Bijvoorbeeld, een kikker is een amfibie. Net als andere dieren van de Amphibian-klasse, kan Kikker veel kenmerken hebben die andere dieren gemeen hebben. Dus hier is een amfibie een soort en zijn dieren zoals kikkers zijn leden.
Als we de amfibiesoort en zijn leden moeten vertegenwoordigen in een softwarepresentatie met behulp van OOP, dan zullen we een klasse 'Amfibieën' ontwikkelen met eigenschappen of gedrag die algemeen voorkomen bij amfibieën in het algemeen.
Op deze manier hoeven we niet de gemeenschappelijke eigenschappen en gedrag te dupliceren voor elk amfibiedier dat we beschrijven. We zullen direct een klasse maken voor elk amfibieën en erfenissen van de klasse Amfibieën, zoals hieronder weergegeven.
Een algemeen idee achter de functie 'Overerving' is dus dat we nieuwe klassen kunnen maken door te erven van de reeds bestaande klassen. Door te erven van de reeds bestaande klassen, kunnen we de eigenschappen en het gedrag van deze klassen gebruiken. Bovendien kunnen we meer eigenschappen en / of gedrag toevoegen in onze nieuwe klasse.
Overervingsfunctie geeft een ' ouder-kind ”Verbinding of relatie in Java. De klasse waarvan de nieuwe klasse is geërfd, wordt de ' Ouderklas 'Terwijl de nieuwe klas de' Kind klasse
Overerving wordt voornamelijk gebruikt:
- Voor methode overschrijven zodat we kunnen bereiken runtime polymorfisme
- Naar hergebruik de code Door te erven van de reeds bestaande klassen, zorgen we ervoor dat de herbruikbaarheid van de code.
Algemene terminologie die bij overerving wordt gebruikt
- Herbruikbaarheid: Mechanisme waarmee nieuwe klassen velden of eigenschappen en methoden van een bestaande klasse hergebruiken.
- Klasse: Een klasse is een verzameling objecten met gemeenschappelijke eigenschappen. Een klasse kan worden gezien als een sjabloon of een blauwdruk voor de objecten.
- Subklasse / kindklasse: Een klasse die erft van een andere klasse is een subklasse of een onderliggende klasse of een afgeleide klasse.
- Super Klasse / Ouder Klasse: Een klasse die wordt overgeërfd door een andere klasse om eigenschappen en methoden te verkrijgen, wordt een bovenliggende klasse of superklasse of een basisklasse genoemd.
De volgende overervingshiërarchie is een voorbeeld van een superklasse en een subklasse.
We hebben een Employee class met velden OrganisationName en EmployeeId. Het kan ook andere velden bevatten, zoals de naam van de werknemer, de afdeling en andere werknemersgegevens.
Vervolgens leiden we een andere klasse af met de naam ‘SoftwareDeveloper’ met het salaris en de extraatjes van het veld. De klasse SoftwareDeveloper-klasse erft van de Employee-klasse en verwerft dus ook de eigenschappen van de Employee-klasse.
Zoals te zien is in het bovenstaande diagram, is de Employee-klasse hier een Super- of Base-klasse en is SoftwareDeveloper een subklasse of een afgeleide klasse.
Trefwoord ‘uitbreidt’ in Java
In Java wordt het trefwoord ‘extends’ gebruikt om de klasse te erven.
De algemene syntaxis van Java-overerving wordt hieronder gegeven:
Zoals hierboven getoond, verschijnt het trefwoord ‘extends’ na de classname in de class-declaratiesyntaxis.
Het zoekwoord ‘extends’ geeft aan dat we een nieuwe klasse ‘SubClass’ maken die de eigenschappen en het gedrag van ‘SuperClass’ zal erven. Met andere woorden, het sleutelwoord extends geeft aan dat we een nieuwe klasse SubClass bouwen op de bestaande functionaliteit van de SuperClass.
De overerving geïmplementeerd met het trefwoord ‘extends’ is de overerving van de klasse. In de volgende tutorial bespreken we een ander zoekwoord ‘implementaties’ waarmee we interfaces kunnen erven.
Een voorbeeld van de klasse Employee-SoftwareDeveloper die we hierboven hebben uitgelegd, kan worden weergegeven als:
IS-A en HAS-A relatie
Beschouw de volgende klassenstructuur:
Dus hoe kunnen we de bovenstaande structuur interpreteren? Als de koe-klasse Mammal uitbreidt of erft, kunnen we zeggen: “Koe IS EEN Zoogdier ”of“ Koe IS een soort van Zoogdier'. Elke keer dat we dergelijke relaties uitdrukken, is die specifieke relatie de 'IS_A' -relatie.
In de bovenstaande structuur hebben we de overervingshiërarchie gebruikt om het feit uit te drukken dat de ene soort van de andere is. Dus in de bovenstaande structuur hebben we een erfenis gebruikt om de relatie tussen koe en zoogdier aan te geven.
Evenzo kunnen we wat meer IS-A-relaties als volgt uitdrukken:
Hierboven zijn enkele veelvoorkomende voorbeelden gegeven van relaties die we kunnen uitdrukken door overerving in Java te gebruiken.
Over het algemeen kunnen de IS-A-relaties worden uitgedrukt door overerving.
Laten we nu het onderstaande voorbeeld bekijken:
In het bovenstaande diagram zien we dat een voertuig twee delen heeft, namelijk motor en rem. Dus hoe kunnen we dit scenario onder woorden brengen?
We kunnen zeggen dat “een voertuig bevat een motor en een voertuig bevat een rem ”.
Dus wat we hier uitdrukken is niet de 'IS-A' -relatie, maar een insluitingsrelatie waarin we een object specificeren als een onderdeel van een ander object.
beste software om cpu-temperatuur te controleren
In het bovenstaande voorbeeld is een motor een deel van de voertuig. Het is geen ' soort van ”Voertuig. Dit is de ' HEEFT EEN ”Of inperkings- of compositie-relatie in Java. De Has-a-relatie in Java wordt uitgedrukt door een object op te nemen als lid van de klasse.
Dus als we hetzelfde voertuigvoorbeeld hierboven volgen, dan kunnen we het uitdrukken zoals hieronder:
Een voertuig heeft dus een motor en een rem. Door de relatie op bovenstaande manier uit te drukken, zijn wij niet geïnteresseerd in de interne implementatie van Motor of rem. De voertuigklasse laat de motor- en remklassen weten wat er nodig is en die klassen zorgen ervoor.
Net als de IS-A-relatie is de HAS-A-relatie ook nuttig bij het hergebruik van de code.
In deze tutorial zullen we overerving (IS-A) in detail bespreken en in de volgende tutorial zullen we Containment of Composition (HAS-A) bespreken.
Java Overervingsvoorbeeld
Laten we een eenvoudig voorbeeld in Java implementeren om overerving aan te tonen.
Uitgang:
Het bovenstaande programma toont een eenvoudig voorbeeld van overerving. Een BaseClass met één methode wordt gedeclareerd. Vervolgens wordt een andere klasse DerivedClass gedeclareerd die BaseClass uitbreidt. Deze klasse heeft ook één methode.
In de hoofdmethode van het programma maken we een DerivedClass-object en met dit object noemen we zowel de BaseClass als de DerivedClass-methode.
De uitvoer toont de berichten die door beide methoden zijn afgedrukt. Aangezien DerivedClass de BaseClass uitbreidt en de BaseClass-methode openbaar is, is deze zichtbaar voor de DerivedClass.
‘Super’ trefwoord in Java
In Overerving hebben we te maken met superklassen of bovenliggende klassen en onderliggende klassen. Als we tussentijds toegang moeten hebben tot superklasse-leden, inclusief variabelen, methoden of constructors, dan hebben we een mechanisme nodig. Dit mechanisme om toegang te krijgen tot de leden van de basisklasse wordt in Java geleverd met behulp van een 'super'-sleutelwoord.
Dus in welke scenario's gebruiken we het trefwoord ‘super’ in Java?
Hieronder vindt u scenario's waarin een ‘super’ zoekwoord nuttig kan zijn.
- Als de super / basisklasse en de sub / afgeleide klasse dezelfde naam hebben voor leden, en we willen toegang tot superklasse-leden, dan gebruiken we het super sleutelwoord.
- Als we toegang willen krijgen tot de constructor van de superklasse vanuit de subklasse, gebruiken we het trefwoord super om het trefwoord superklasse aan te roepen.
In de bovenstaande afbeelding hebben we een overervingsstructuur laten zien. Zowel in de basisklasse als in de afgeleide klasse hebben we een String-variabele myStr. In deivedClass hebben we een printStr () -functie. Bij deze methode hebben we het trefwoord ‘super’ gebruikt om toegang te krijgen tot de variabele myStr vanuit de basisklasse.
In de afbeelding hebben we de pijlen laten zien die naar de basisvariabele en de afgeleide klassenvariabele wijzen.
Laten we nu eens kijken naar de programmeervoorbeelden van het gebruik van het trefwoord super om toegang te krijgen tot verschillende superklasse-leden.
verschil tussen testcase en testscenario
# 1) Toegang tot Superclass-lidvariabele
Het volgende Java-programma demonstreert het gebruik van een ‘super’ sleutelwoord om toegang te krijgen tot variabelen uit de basisklasse.
Uitgang:
Het bovenstaande programma laat zien hoe u toegang krijgt tot de lidvariabelen van de basisklasse vanuit de afgeleide klasse wanneer de lidvariabelen worden gedeclareerd met dezelfde naam, zowel in de basisklasse als in de afgeleide klasse.
Hier hebben we de myStr-variabele die zowel in de basis als in de afgeleide klasse wordt gedeclareerd. In de methode printdetails verwijzen we naar de myStr-variabele van de basisklasse met behulp van 'super.myStr', terwijl de afgeleide klassevariabele myStr rechtstreeks toegankelijk is zonder enige kwalificatie.
# 2) Toegang tot superklasse-methode
Vervolgens zullen we zien hoe de methode van de basisklasse wordt aangeroepen wanneer de methode in de basisklasse en de methode in de afgeleide klasse dezelfde naam hebben.
Het volgende programma laat dit zien.
Uitgang:
# 3) Toegang tot Superklasse Constructor
Als we de ene klasse van de andere erven, houd er dan rekening mee dat de constructors niet worden overgenomen.
Als we instructies van de superklasse-constructors willen uitvoeren voordat we de afgeleide klasse-constructor uitvoeren, kunnen we de superklasse-constructor ook aanroepen met het trefwoord ‘super’.
Voor het aanroepen van de constructor superklasse gebruiken we de method call.
super (parameterlijst ...)
De volgende methode demonstreert de toegang tot superconstructors in Java.
Uitgang:
Zoals we kunnen zien in het bovenstaande programma, hebben we de constructor van de superklasse genoemd vanuit de afgeleide klassenconstructor. Merk op dat volgens afspraak, wanneer we toegang willen hebben tot de superklasse-constructor, dit de eerste instructie in de constructor van de afgeleide klasse moet zijn.
Omdat de basisklasse een constructor met parameters heeft, geven we ook de juiste parameter door aan de superoproep terwijl we de constructor aanroepen.
Als er geen expliciete aanroep naar de superconstructor is zoals hierboven, dan voegt de compiler altijd automatisch een impliciete aanroep aan super () toe. Maar merk op dat dit een aanroep is naar de standaardconstructor van de superklasse.
Veel Gestelde Vragen
V # 1) Wat is overerving in Java?
Antwoord: Een proces waarbij een klasse de eigenschappen en het gedrag van een andere klasse verwerft, wordt overerving genoemd. In Java wordt de ene klasse geërfd door een andere klasse met het trefwoord ‘extends’.
Overerving bevordert herbruikbaarheid van code omdat we door overerving de reeds bestaande eigenschappen en het gedrag van een geërfde klasse kunnen verwerven en gebruiken zonder dubbele code te hoeven schrijven.
Vraag 2) Waarom wordt Inheritance gebruikt in Java?
Antwoord: Overerving wordt voornamelijk gebruikt om de herbruikbaarheid van de applicatie te verbeteren. Door overerving te gebruiken, kunnen we kant-en-klare klassen in onze applicatie gebruiken. We hoeven onze code niet te schrijven als we de functionaliteit gereed hebben.
Het tweede gebruik van overerving is het overschrijven van methoden. Om runtime polymorfisme te implementeren maken we gebruik van overerving.
V # 3) Wat zijn de voordelen van overerving?
Antwoord: Herbruikbaarheid is het belangrijkste voordeel van overerving. Het delen van code door overerving resulteert ook in een betere leesbaarheid en een betere organisatie van code.
We kunnen ook runtime-polymorfisme bereiken door methode te overschrijven met behulp van overerving.
V # 4) Wat zijn de kenmerken van Inheritance?
Antwoord: Elk kenmerk of kenmerk dat van de oudere generatie is verkregen, gebeurt door overerving. Bijvoorbeeld, de lichtoog-eigenschap die in veel gezinnen voorkomt, is een voorbeeld van overerving.
Vanuit het oogpunt van programmeren biedt overerving het kenmerk van herbruikbaarheid en overschrijven van methoden.
Q # 5) Is super () nodig?
Antwoord: Nee. Want als we super () niet aanroepen, doet de compiler het impliciet voor ons. Maar dan is de impliciete aanroep van super () de standaard constructor van de basisklasse. Dus als we een geparametriseerde constructor uit een basisklasse nodig hebben, dan moeten we die expliciet noemen.
Gevolgtrekking
In deze tutorial hebben we het concept van overerving in Java geïntroduceerd. Overerving is het proces waarbij de eigenschappen en het gedrag van een klasse in een andere klasse worden verworven. We hebben hier de basisdefinitie en terminologie die we bij overerving gebruiken besproken.
We hebben ook de Is-A- en Has-A-relaties in Java besproken. Overerving wordt gebruikt om een Is-A-relatie te implementeren.
Vervolgens bespraken we de ‘extends’ en ‘super’ sleutelwoorden in Java die worden gebruikt in verband met de overerving. Extends wordt gebruikt om overerving te implementeren. Het sleutelwoord super wordt gebruikt om te verwijzen naar de constructor, methode of variabele van de basisklasse uit de afgeleide klasse.
Bekijk hier de perfecte Java-trainingsgids.
Aanbevolen literatuur
- Zelfstudie voor Java-scannerklassen met voorbeelden
- Wat is Java-vector | Java Vector Class-zelfstudie met voorbeelden
- Java Enum: zelfstudie over Java-opsomming met voorbeelden
- Java String length () Methode met voorbeelden
- Java Float-zelfstudie met programmeervoorbeelden
- Overerving in C ++
- Soorten overerving in C ++
- Python OOPs-concepten (Python-klassen, objecten en overerving)