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

Java-erfenis

In deze zelfstudie leren we over Java-overerving en zijn typen met behulp van voorbeelden.

Overerving is een van de belangrijkste kenmerken van OOP waarmee we een nieuwe klasse kunnen maken van een bestaande klasse.

De nieuwe klasse die wordt gemaakt, staat bekend als subklasse (kind of afgeleide klasse) en de bestaande klasse waarvan de onderliggende klasse is afgeleid, staat bekend als superklasse (ouder- of basisklasse).

De extends sleutelwoord wordt gebruikt om overerving in Java uit te voeren. Bijvoorbeeld,

class Animal {
  // methods and fields
}

// use of extends keyword
// to perform inheritance
class Dog extends Animal {

  // methods and fields of Animal
  // methods and fields of Dog
}

In het bovenstaande voorbeeld is de Hond klasse wordt gemaakt door de methoden en velden over te nemen van de Animal klasse.

Hier, Hond is de subklasse en Animal is de superklasse.


Voorbeeld 1:Java-erfenis

class Animal {

  // field and method of the parent class
  String name;
  public void eat() {
    System.out.println("I can eat");
  }
}

// inherit from Animal
class Dog extends Animal {

  // new method in subclass
  public void display() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access field of superclass
    labrador.name = "Rohu";
    labrador.display();

    // call method of superclass
    // using object of subclass
    labrador.eat();

  }
}

Uitvoer

My name is Rohu
I can eat

In het bovenstaande voorbeeld hebben we een subklasse afgeleid Hond van superklasse Dier . Let op de uitspraken,

labrador.name = "Rohu";

labrador.eat();

Hier, labrador is een object van Hond . Echter, naam en eat() zijn de leden van de Animal klasse.

Sinds Hond neemt het veld en de methode over van Animal , hebben we toegang tot het veld en de methode met behulp van het object van de Hond .


is-een relatie

In Java is overerving een is-a relatie. Dat wil zeggen, we gebruiken alleen overerving als er een is-a-relatie bestaat tussen twee klassen. Bijvoorbeeld,

  • Auto is een Voertuig
  • Oranje is een Fruit
  • Chirurg is een Dokter
  • Hond is een dier

Hier, Auto kan erven van Voertuig , Oranje kan erven van Fruit , enzovoort.


Methode overschrijven in Java-overerving

In Voorbeeld 1 , zien we dat het object van de subklasse toegang heeft tot de methode van de superklasse.

Als dezelfde methode echter aanwezig is in zowel de superklasse als de subklasse, wat gebeurt er dan?

In dit geval overschrijft de methode in de subklasse de methode in de superklasse. Dit concept staat in Java bekend als methode-override.

Voorbeeld 2:Methode overschrijven in Java Inheritance

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

Uitvoer

I eat dog food
I can bark

In het bovenstaande voorbeeld is de eat() methode is aanwezig in zowel de superklasse Animal en de subklasse Hond .

Hier hebben we een object labrador . gemaakt van Hond .

Als we nu eat() call bellen met behulp van het object labrador , de methode binnen Hond wordt genoemd. Dit komt omdat de methode binnen de afgeleide klasse de methode binnen de basisklasse overschrijft.

Dit wordt methode-overriding genoemd. Ga voor meer informatie naar Java Method Overriding.

Opmerking :We hebben de @Override . gebruikt annotatie om de compiler te vertellen dat we een methode overschrijven. De annotatie is echter niet verplicht. Ga voor meer informatie naar Java-annotaties.


super-zoekwoord in Java-overerving

Eerder zagen we dat dezelfde methode in de subklasse de methode in de superklasse overschrijft.

In een dergelijke situatie zal de super trefwoord wordt gebruikt om de methode van de bovenliggende klasse aan te roepen vanuit de methode van de onderliggende klasse.

Voorbeeld 3:superzoekwoord in overerving

class Animal {

  // method in the superclass
  public void eat() {
    System.out.println("I can eat");
  }
}

// Dog inherits Animal
class Dog extends Animal {

  // overriding the eat() method
  @Override
  public void eat() {

    // call method of superclass
    super.eat();
    System.out.println("I eat dog food");
  }

  // new method in subclass
  public void bark() {
    System.out.println("I can bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // call the eat() method
    labrador.eat();
    labrador.bark();
  }
}

Uitvoer

I can eat
I eat dog food
I can bark 

In het bovenstaande voorbeeld is de eat() methode is aanwezig in zowel de basisklasse Animal en de afgeleide klasse Hond . Let op de verklaring,

super.eat();

Hier, de super trefwoord wordt gebruikt om de eat() . aan te roepen methode aanwezig in de superklasse.

We kunnen ook de super . gebruiken sleutelwoord om de constructor van de superklasse aan te roepen vanuit de constructor van de subklasse. Ga voor meer informatie naar Java-superzoekwoord.


beschermde leden in erfenis

In Java, als een klasse protected . bevat velden en methoden, dan zijn deze velden en methoden toegankelijk vanuit de subklasse van de klasse.

Voorbeeld 4:beschermde leden in erfenis

class Animal {
  protected String name;

  protected void display() {
    System.out.println("I am an animal.");
  }
}

class Dog extends Animal {

  public void getInfo() {
    System.out.println("My name is " + name);
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of the subclass
    Dog labrador = new Dog();

    // access protected field and method
    // using the object of subclass
    labrador.name = "Rocky";
    labrador.display();

    labrador.getInfo();
  }
}

Uitvoer

I am an animal.
My name is Rocky

In het bovenstaande voorbeeld hebben we een klasse gemaakt met de naam Animal. De klasse bevat een beveiligd veld:naam en een methode:display() .

We hebben de Hond . geërfd klasse erft Dier . Let op de verklaring,

labrador.name = "Rocky";
labrador.display();

Hier hebben we toegang tot het beveiligde veld en de methode van de superklasse met behulp van de labrador object van de subklasse.


Waarom overerving gebruiken?

  • Het belangrijkste gebruik van overerving in Java is herbruikbaarheid van code. De code die aanwezig is in de bovenliggende klasse kan direct worden gebruikt door de onderliggende klasse.
  • Het overschrijven van methoden is ook bekend als runtime-polymorfisme. Daarom kunnen we polymorfisme in Java bereiken met behulp van overerving.

Soorten overerving

Er zijn vijf soorten overerving.

1. Enkele erfenis

Bij enkele overerving strekt een enkele subklasse zich uit van een enkele superklasse. Bijvoorbeeld,


2. Overerving op meerdere niveaus

Bij overerving op meerdere niveaus breidt een subklasse zich uit van een superklasse en vervolgens fungeert dezelfde subklasse als een superklasse voor een andere klasse. Bijvoorbeeld,


3. Hiërarchische overerving

Bij hiërarchische overerving strekken meerdere subklassen zich uit van een enkele superklasse. Bijvoorbeeld,


4. Meerdere overerving

Bij meervoudige overerving strekt een enkele subklasse zich uit van meerdere superklassen. Bijvoorbeeld,

Opmerking :Java ondersteunt geen meervoudige overerving. We kunnen echter meerdere overerving bereiken met behulp van interfaces. Ga voor meer informatie naar Java implementeert meervoudige overerving.


5. Hybride overerving

Hybride overerving is een combinatie van twee of meer soorten overerving. Bijvoorbeeld,

Hier hebben we hiërarchische en meervoudige overerving gecombineerd om een ​​hybride overerving te vormen.


Java

  1. C# Overerving
  2. Java laatste trefwoord
  3. Java-instantie van Operator
  4. Java geneste statische klasse
  5. Java anonieme klasse
  6. Java Singleton-klasse
  7. Java-reflectie
  8. Java ObjectOutputStream-klasse
  9. Java-generieken
  10. Java-bestandsklasse
  11. C# - Overerving