Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java-erfenis meesteren: concepten, typen en praktische voorbeelden

Java-erfenis meesteren

Verken Java-erfenis in diepte – begrijp de principes, real-world voorbeelden en hoe je het toepast voor schonere, herbruikbare code.

Erfenis is een hoeksteen van objectgeoriënteerd programmeren waarmee je een nieuwe klasse kunt maken op basis van een bestaande.

De afgeleide klasse heet een subklasse (kind of afgeleide), terwijl de klasse die het uitbreidt de superklasse (ouder of basis) is. Het extends sleutelwoord realiseert deze relatie.

class Dier { // methoden en velden } class Hond extends Dier { // Hond erft velden en methoden van Dier }

Hier erft Hond alle leden van Dier – de subklasse krijgt de functionaliteit van de ouder.


Voorbeeld 1: Basis erfenis

class Dier { String naam; public void eet() { System.out.println("Ik kan eten"); } } class Hond extends Dier { public void toon() { System.out.println("Mijn naam is " + naam); } } class Main { public static void main(String[] args) { Hond labrador = new Hond(); labrador.naam = "Rohu"; labrador.toon(); labrador.eet(); } }

Uitvoer

Mijn naam is Rohu Ik kan eten

In dit voorbeeld erft Hond naam en eet() van Dier, zodat een Hond-object ze direct kan benaderen.

Java-erfenis meesteren: concepten, typen en praktische voorbeelden

De is-een relatie

Erfenis in Java vertegenwoordigt een is-een relatie: een subklasse is een gespecialiseerde vorm van zijn superklasse.

  • Auto is een Voertuig
  • Sinaasappel is een Fruit
  • Chirurg is een Dokter
  • Hond is een Dier

Deze natuurlijke hiërarchieën rechtvaardigen het gebruik van erfenis.


Methode overriden

Wanneer een subklasse een methode definieert met dezelfde handtekening als zijn superklasse, overrided de subklasse-methode de superklasse-versie. Dit maakt runtime polymorfisme mogelijk.

Voorbeeld 2: eat() overriden

class Dier { public void eet() { System.out.println("Ik kan eten"); } } class Hond extends Dier { @Override public void eet() { System.out.println("Ik eet hondenvoer"); } public void blaf() { System.out.println("Ik kan blaffen"); } } class Main { public static void main(String[] args) { Hond labrador = new Hond(); labrador.eet(); labrador.blaf(); } }

Uitvoer

Ik eet hondenvoer Ik kan blaffen

De eet() aanroep op labrador resolveert naar de ge-override methode in Hond.

Tip: De @Override annotatie is optioneel maar sterk aanbevolen – het zorgt ervoor dat de compiler controleert of je inderdaad een methode overrided.


super gebruiken om de superklasse te benaderen

Bij overriden laat het super sleutelwoord je de implementatie van de ouder aanroepen.

Voorbeeld 3: super in eet()

class Dier { public void eet() { System.out.println("Ik kan eten"); } } class Hond extends Dier { @Override public void eet() { super.eet(); System.out.println("Ik eet hondenvoer"); } public void blaf() { System.out.println("Ik kan blaffen"); } } class Main { public static void main(String[] args) { Hond labrador = new Hond(); labrador.eet(); labrador.blaf(); } }

Uitvoer

Ik kan eten Ik eet hondenvoer Ik kan blaffen

Hier roept super.eet() de methode aan gedefinieerd in Dier voordat de subklasse-logica uitgevoerd wordt.

Op dezelfde manier kan super superklasse constructors aanroepen.


Protected leden in erfenis

Velden of methoden gemarkeerd als protected zijn toegankelijk voor subklassen ongeacht pakket.

Voorbeeld 4: Toegang tot protected leden

class Dier { protected String naam; protected void toon() { System.out.println("Ik ben een dier."); } } class Hond extends Dier { public void getInfo() { System.out.println("Mijn naam is " + naam); } } class Main { public static void main(String[] args) { Hond labrador = new Hond(); labrador.naam = "Rocky"; labrador.toon(); labrador.getInfo(); } }

Uitvoer

Ik ben een dier. Mijn naam is Rocky

De subklasse kan het protected veld naam vrij lezen en wijzigen en toon() aanroepen.


Waarom erfenis gebruiken?

  • Code hergebruik: Een kindklasse erft automatisch alle public en protected leden van zijn ouder.
  • Polymorfisme: Overriden maakt dynamische methode-dispatch mogelijk, een sleutelfeature van runtime polymorfisme.

Typen erfenis

Java ondersteunt vijf conceptuele erfenismodellen – elk nuttig in verschillende scenario's.

1. Enkele erfenis

Een klasse breidt slechts één superklasse uit.

Java-erfenis meesteren: concepten, typen en praktische voorbeelden

2. Meervoudige erfenis (Multilevel)

Een subklasse wordt de superklasse van een andere klasse, wat een ketting creëert.

Java-erfenis meesteren: concepten, typen en praktische voorbeelden

3. Hiërarchische erfenis

Meerdere subklassen erven van één superklasse.

Java-erfenis meesteren: concepten, typen en praktische voorbeelden

4. Multiple erfenis

Java staat niet toe dat een klasse meer dan één klasse uitbreidt, maar interfaces bieden een manier om dit patroon te bereiken.

Java-erfenis meesteren: concepten, typen en praktische voorbeelden

Let op: Multiple erfenis kan geïmplementeerd worden via interfaces; zie Java implements multiple inheritance.


5. Hybride erfenis

Een mengsel van twee of meer erfenistypen – bijvoorbeeld het combineren van hiërarchische en multiple erfenis.

Java-erfenis meesteren: concepten, typen en praktische voorbeelden

Java

  1. C# Inheritance: Concepten, Types en Praktische Code
  2. C# Erfelijkheid Beheersen: Herbruikbare, Onderhoudbare Code Bouwen
  3. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
  4. Java instanceof operator: een uitgebreide gids
  5. Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
  6. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  7. Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
  8. Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
  9. Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
  10. Java Generics: Herbruikbare, type-veilige code bouwen
  11. Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen