Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Herencia de Java

Herencia de Java

En este tutorial, aprenderemos sobre la herencia de Java y sus tipos con la ayuda de ejemplos.

La herencia es una de las características clave de OOP que nos permite crear una nueva clase a partir de una clase existente.

La nueva clase que se crea se conoce como subclase (clase secundaria o derivada) y la clase existente de donde se deriva la clase secundaria se conoce como superclase (clase padre o base).

El extends La palabra clave se utiliza para realizar la herencia en Java. Por ejemplo,

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
}

En el ejemplo anterior, el Perro La clase se crea heredando los métodos y campos del Animal clase.

Toma, Perro es la subclase y Animal es la superclase.


Ejemplo 1:herencia de Java

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

  }
}

Salida

My name is Rohu
I can eat

En el ejemplo anterior, hemos derivado una subclase Perro de la superclase Animal . Observe las declaraciones,

labrador.name = "Rohu";

labrador.eat();

Aquí, labrador es un objeto de Perro . Sin embargo, nombre y eat() son los miembros del Animal clase.

Desde Perro hereda el campo y el método de Animal , podemos acceder al campo y al método usando el objeto del Dog .


es-una relación

En Java, la herencia es un is-a relación. Es decir, usamos la herencia solo si existe una relación es-un entre dos clases. Por ejemplo,

Aquí, Coche puede heredar de Vehículo , Naranja puede heredar de Fruit , y así sucesivamente.


Sustitución de métodos en la herencia de Java

En Ejemplo 1 , vemos que el objeto de la subclase puede acceder al método de la superclase.

Sin embargo, si el mismo método está presente tanto en la superclase como en la subclase, ¿qué sucederá?

En este caso, el método de la subclase anula el método de la superclase. Este concepto se conoce como anulación de métodos en Java.

Ejemplo 2:anulación de métodos en la herencia de Java

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

Salida

I eat dog food
I can bark

En el ejemplo anterior, el eat() El método está presente tanto en la superclase Animal y la subclase Perro .

Aquí, hemos creado un objeto labrador de Perro .

Ahora cuando llamamos a eat() usando el objeto labrador , el método dentro de Dog se llama. Esto se debe a que el método dentro de la clase derivada anula el método dentro de la clase base.

Esto se denomina anulación de métodos. Para obtener más información, visite Anulación de métodos de Java.

Nota :Hemos utilizado el @Override anotación para decirle al compilador que estamos anulando un método. Sin embargo, la anotación no es obligatoria. Para obtener más información, visite Anotaciones de Java.


palabra clave super en la herencia de Java

Previamente vimos que el mismo método en la subclase anula el método en la superclase.

En tal situación, el super La palabra clave se utiliza para llamar al método de la clase principal desde el método de la clase secundaria.

Ejemplo 3:palabra clave super en herencia

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

Salida

I can eat
I eat dog food
I can bark 

En el ejemplo anterior, el eat() El método está presente tanto en la clase base Animal y la clase derivada Perro . Note la declaración,

super.eat();

Aquí, el super palabra clave se utiliza para llamar al eat() método presente en la superclase.

También podemos usar el super palabra clave para llamar al constructor de la superclase desde el constructor de la subclase. Para obtener más información, visite la palabra clave super de Java.


Miembros protegidos en Herencia

En Java, si una clase incluye protected campos y métodos, entonces estos campos y métodos son accesibles desde la subclase de la clase.

Ejemplo 4:miembros protegidos en herencia

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

Salida

I am an animal.
My name is Rocky

En el ejemplo anterior, hemos creado una clase llamada Animal. La clase incluye un campo protegido:nombre y un método:display() .

Hemos heredado el Perro la clase hereda Animal . Note la declaración,

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

Aquí, podemos acceder al campo protegido y al método de la superclase usando labrador objeto de la subclase.


¿Por qué usar la herencia?


Tipos de herencia

Hay cinco tipos de herencia.

1. Herencia única

En herencia simple, una sola subclase se extiende desde una sola superclase. Por ejemplo,


2. Herencia multinivel

En la herencia multinivel, una subclase se extiende desde una superclase y luego la misma subclase actúa como una superclase para otra clase. Por ejemplo,


3. Herencia jerárquica

En la herencia jerárquica, múltiples subclases se extienden desde una sola superclase. Por ejemplo,


4. Herencia múltiple

En herencia múltiple, una sola subclase se extiende desde múltiples superclases. Por ejemplo,

Nota :Java no admite la herencia múltiple. Sin embargo, podemos lograr herencia múltiple usando interfaces. Para obtener más información, visite Java implementa la herencia múltiple.


5. Herencia híbrida

La herencia híbrida es una combinación de dos o más tipos de herencia. Por ejemplo,

Aquí, hemos combinado herencia jerárquica y múltiple para formar una herencia híbrida.


Java

  1. Herencia de C#
  2. Palabra clave final de Java
  3. Operador de instancia de Java
  4. Clase estática anidada de Java
  5. Clase anónima de Java
  6. Clase única de Java
  7. Reflexión Java
  8. Clase Java ObjectOutputStream
  9. Genéricos de Java
  10. Clase de archivo Java
  11. C# - Herencia