Java-arv (med eksempler)

I denne vejledning lærer vi om Java-arv og dens typer ved hjælp af eksemplet.

Arv er en af ​​nøglefunktionerne i OOP, der giver os mulighed for at oprette en ny klasse fra en eksisterende klasse.

Den nye klasse, der oprettes, er kendt som underklasse (underordnet eller afledt klasse), og den eksisterende klasse, hvorfra underordnet klasse er afledt, er kendt som superklasse (overordnet eller basisklasse).

Den extendssøgeord bruges til at udføre arv i Java. For eksempel,

 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 )

I ovenstående eksempel oprettes hundeklassen ved at arve metoderne og felterne fra klassen Dyre.

Her er Hund underklassen, og Dyr er superklassen.

Eksempel 1: Java-arv

 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(); ) )

Produktion

 Mit navn er Rohu, jeg kan spise

I ovenstående eksempel har vi afledt en underklasse hund fra superklasse Animal. Bemærk udsagnene,

 labrador.name = "Rohu"; labrador.eat();

Her er labrador et objekt af hund. Navn og eat()er dog medlemmer af klassen Animal.

Da hund arver feltet og metoden fra Animal, er vi i stand til at få adgang til marken og metoden ved hjælp af hundens objekt.

Implementering af Java-arv

er-et forhold

I Java er arv et is-a- forhold. Det vil sige, vi bruger kun arv, hvis der findes et is-en-forhold mellem to klasser. For eksempel,

  • Bil er et køretøj
  • Orange er en frugt
  • Kirurg er læge
  • Hund er et dyr

Her kan bil arve fra køretøj , orange kan arve fra frugt osv.

Metodeoverstyring i Java-arv

I eksempel 1 ser vi genstanden til underklassen kan få adgang til superklassens metode.

Men hvis den samme metode er til stede i både superklassen og underklassen, hvad sker der?

I dette tilfælde tilsidesætter metoden i underklassen metoden i superklassen. Dette koncept er kendt som metodeoverstyring i Java.

Eksempel 2: Metodeoverstyring i Java Arv

 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(); ) )

Produktion

 Jeg spiser hundemad, jeg kan gø

I ovenstående eksempel er eat()metoden til stede i både superklassen Animal og underklassen Dog.

Her har vi oprettet en objekt labrador af hund.

Nu når vi ringer eat()ved hjælp af objektet labrador, kaldes metoden inde i hunden. Dette skyldes, at metoden inden for den afledte klasse tilsidesætter metoden inden i basisklassen.

Dette kaldes metodeoverstyring. For at lære mere, besøg Java Method Overriding.

Bemærk : Vi har brugt @Overridekommentaren til at fortælle compileren, at vi tilsidesætter en metode. Bemærkningen er dog ikke obligatorisk. Hvis du vil vide mere, skal du besøge Java Annotations.

super nøgleord i Java Arv

Tidligere så vi, at den samme metode i underklassen tilsidesætter metoden i superklassen.

I en sådan situation superbruges nøgleordet til at kalde metoden for den overordnede klasse fra metoden for den underordnede klasse.

Eksempel 3: super nøgleord i arv

 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(); ) )

Produktion

 Jeg kan spise Jeg spiser hundemad, jeg kan gø 

I ovenstående eksempel er eat()metoden til stede i både basisklassen Animal og den afledte klasse Dog. Bemærk erklæringen,

 super.eat();

Her superbruges nøgleordet til at kalde eat()metoden til stede i superklassen.

Vi kan også bruge supernøgleordet til at kalde konstruktøren til superklassen fra konstruktøren til underklassen. For at lære mere, besøg Java super nøgleord .

beskyttede medlemmer i arv

I Java, hvis en klasse indeholder protectedfelter og metoder, er disse felter og metoder tilgængelige fra underklassen til klassen.

Example 4: protected Members in Inheritance

 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(); ) )

Output

 I am an animal. My name is Rocky

In the above example, we have created a class named Animal. The class includes a protected field: name and a method: display().

We have inherited the Dog class inherits Animal. Notice the statement,

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

Here, we are able to access the protected field and method of the superclass using the labrador object of the subclass.

Why use inheritance?

  • The most important use of inheritance in Java is code reusability. The code that is present in the parent class can be directly used by the child class.
  • Method overriding is also known as runtime polymorphism. Hence, we can achieve Polymorphism in Java with the help of inheritance.

Types of inheritance

There are five types of inheritance.

1. Single Inheritance

I en enkelt arv strækker en enkelt underklasse sig fra en enkelt superklasse. For eksempel,

Java enkelt arv

2. Arvelighed på flere niveauer

I arv på flere niveauer strækker en underklasse sig fra en superklasse, og derefter fungerer den samme underklasse som en superklasse for en anden klasse. For eksempel,

Java-arv med flere niveauer

3. Hierarkisk arv

I hierarkisk arv strækker flere underklasser sig fra en enkelt superklasse. For eksempel,

Java hierarkisk arv

4. Flere arv

I flere arv strækker en enkelt underklasse sig fra flere superklasser. For eksempel,

Java flere arv

Bemærk : Java understøtter ikke flere arv. Vi kan dog opnå flere arv ved hjælp af grænseflader. Hvis du vil vide mere, skal du besøge Java implementerer flere arv.

5. Hybrid arv

Hybrid arv er en kombination af to eller flere typer arv. For eksempel,

Java Hybrid arv

Her har vi kombineret hierarkisk og multipel arv for at danne en hybrid arv.

Interessante artikler...