Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Herança Java

Herança Java


Neste tutorial, aprenderemos sobre herança Java e seus tipos com a ajuda do exemplo.

A herança é um dos principais recursos da OOP que nos permite criar uma nova classe a partir de uma classe existente.

A nova classe criada é conhecida como subclass (classe filha ou derivada) e a classe existente de onde a classe filha é derivada é conhecida como superclasse (classe pai ou base).

O extends A palavra-chave é usada para executar herança em Java. Por exemplo,

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
}

No exemplo acima, o Cão A classe é criada herdando os métodos e campos da classe Animal classe.

Aqui, Cão é a subclasse e Animal é a superclasse.

Exemplo 1:herança 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();

  }
}

Saída
My name is Rohu
I can eat

No exemplo acima, derivamos uma subclasse Dog da superclasse Animal . Observe as afirmações,
labrador.name = "Rohu";

labrador.eat();

Aqui, labrador é um objeto de Cão . No entanto, nome e eat() são os membros do Animal classe.

Desde Cão herda o campo e o método de Animal , podemos acessar o campo e o método usando o objeto do Dog .

é-um relacionamento


Em Java, herança é um is-a relação. Ou seja, usamos herança somente se existir um relacionamento é-um entre duas classes. Por exemplo,
  • Carro é um veículo
  • Laranja é uma fruta
  • Cirurgião é um Doutor
  • Cão é um Animal

Aqui, Carro pode herdar de Veículo , Laranja pode herdar de Frutas , e assim por diante.

Substituição de método na herança Java


No Exemplo 1 , vemos que o objeto da subclasse pode acessar o método da superclasse.

No entanto, se o mesmo método estiver presente na superclasse e na subclasse, o que acontecerá?

Nesse caso, o método da subclasse substitui o método da superclasse. Esse conceito é conhecido como substituição de método em Java.

Exemplo 2:substituição de método na herança 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();
  }
}

Saída
I eat dog food
I can bark



No exemplo acima, o eat() está presente na superclasse Animal e a subclasse Cão .

Aqui, criamos um objeto labrador de Cão .

Agora, quando chamamos eat() usando o objeto labrador , o método dentro de Dog é chamado. Isso ocorre porque o método dentro da classe derivada substitui o método dentro da classe base.

Isso é chamado de substituição de método. Para saber mais, visite Sobreposição do método Java.

Observação :Usamos o @Override anotação para informar ao compilador que estamos substituindo um método. No entanto, a anotação não é obrigatória. Para saber mais, visite Anotações Java.

super palavra-chave na herança Java


Anteriormente, vimos que o mesmo método na subclasse substitui o método na superclasse.

Em tal situação, o super A palavra-chave é usada para chamar o método da classe pai a partir do método da classe filha.

Exemplo 3:superpalavra-chave na herança

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

Saída
I can eat
I eat dog food
I can bark 

No exemplo acima, o eat() está presente tanto na classe base Animal e a classe derivada Cão . Observe a afirmação,
super.eat();

Aqui, o super palavra-chave é usada para chamar o eat() método presente na superclasse.

Também podemos usar o super palavra-chave para chamar o construtor da superclasse do construtor da subclasse. Para saber mais, visite a superpalavra-chave Java.

Membros protegidos na herança


Em Java, se uma classe inclui protected campos e métodos, então esses campos e métodos são acessíveis a partir da subclasse da classe.

Exemplo 4:membros protegidos na herança

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

Saída
I am an animal.
My name is Rocky

No exemplo acima, criamos uma classe chamada Animal. A classe inclui um campo protegido:name e um método:display() .

Herdamos o Cão classe herda Animal . Observe a afirmação,
labrador.name = "Rocky";
labrador.display();

Aqui, podemos acessar o campo protegido e o método da superclasse usando o labrador objeto da subclasse.

Por que usar herança?

  • O uso mais importante da herança em Java é a reutilização de código. O código presente na classe pai pode ser usado diretamente pela classe filha.
  • A substituição de método também é conhecida como polimorfismo de tempo de execução. Portanto, podemos alcançar o polimorfismo em Java com a ajuda da herança.

Tipos de herança


Existem cinco tipos de herança.

1. Herança única


Na herança simples, uma única subclasse se estende de uma única superclasse. Por exemplo,

2. Herança multinível


Na herança multinível, uma subclasse se estende de uma superclasse e, em seguida, a mesma subclasse atua como uma superclasse para outra classe. Por exemplo,

3. Herança hierárquica


Na herança hierárquica, várias subclasses se estendem de uma única superclasse. Por exemplo,

4. Herança múltipla


Na herança múltipla, uma única subclasse se estende de várias superclasses. Por exemplo,

Observação :Java não suporta herança múltipla. No entanto, podemos obter herança múltipla usando interfaces. Para saber mais, visite Java implementa herança múltipla.

5. Herança híbrida


A herança híbrida é uma combinação de dois ou mais tipos de herança. Por exemplo,

Aqui, combinamos herança hierárquica e múltipla para formar uma herança híbrida.

Java

  1. Palavra-chave final Java
  2. Java instanceof Operator
  3. Classe estática aninhada em Java
  4. Classe anônima Java
  5. Classe Java Singleton
  6. Reflexão Java
  7. Classe Java ObjectOutputStream
  8. Genéricos Java
  9. Classe de arquivo Java
  10. C# - Herança