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

Sobreposição do método Java

Substituição do método Java


Neste tutorial, aprenderemos sobre substituição de métodos em Java com a ajuda de exemplos.

No último tutorial, aprendemos sobre herança. A herança é uma propriedade OOP que nos permite derivar uma nova classe (subclasse) de uma classe existente (superclasse). A subclasse herda os atributos e métodos da superclasse.

Agora, se o mesmo método for definido na superclasse e na subclasse, o método da classe da subclasse substituirá o método da superclasse. Isso é conhecido como substituição de método.


Exemplo 1:substituição de método

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   @Override
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

Saída :
I am a dog.

No programa acima, o displayInfo() está presente tanto no método Animal superclasse e o Cão subclasse.

Quando chamamos displayInfo() usando o d1 object (objeto da subclasse), o método dentro da subclasse Dog é chamado. O displayInfo() O método da subclasse substitui o mesmo método da superclasse.



Observe o uso do @Override anotação em nosso exemplo. Em Java, as anotações são os metadados que usamos para fornecer informações ao compilador. Aqui, o @Override annotation especifica ao compilador que o método após esta anotação substitui o método da superclasse.

Não é obrigatório usar @Override . No entanto, quando usamos isso, o método deve seguir todas as regras de sobreposição. Caso contrário, o compilador gerará um erro.

Regras de substituição Java


super palavra-chave na substituição de Java


Uma pergunta comum que surge ao executar a substituição em Java é:

Podemos acessar o método da superclasse após a substituição?

Bem, a resposta é Sim . Para acessar o método da superclasse da subclasse, usamos o super palavra-chave.

Exemplo 2:uso de superpalavra-chave

class Animal {
   public void displayInfo() {
      System.out.println("I am an animal.");
   }
}

class Dog extends Animal {
   public void displayInfo() {
      super.displayInfo();
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

Saída :
I am an animal.
I am a dog.

No exemplo acima, a subclasse Cão substitui o método displayInfo() da superclasse Animal .

Quando chamamos o método displayInfo() usando o d1 objeto do Cão subclasse, o método dentro do Dog subclasse é chamada; o método dentro da superclasse não é chamado.



Dentro de displayInfo() do Cão subclasse, usamos super.displayInfo() para chamar displayInfo() da superclasse.


É importante notar que os construtores em Java não são herdados. Portanto, não existe substituição de construtor em Java.

No entanto, podemos chamar o construtor da superclasse de suas subclasses. Para isso, usamos super() . Para saber mais, visite a super palavra-chave Java.

Especificadores de acesso na substituição de método


O mesmo método declarado na superclasse e suas subclasses podem ter diferentes especificadores de acesso. No entanto, há uma restrição.

Só podemos usar esses especificadores de acesso em subclasses que fornecem acesso maior do que o especificador de acesso da superclasse. Por exemplo,

Suponha que um método myClass() na superclasse é declarado protected . Em seguida, o mesmo método myClass() na subclasse pode ser public ou protected , mas não private .

Exemplo 3:especificador de acesso na substituição

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

class Dog extends Animal {
   public void displayInfo() {
      System.out.println("I am a dog.");
   }
}

class Main {
   public static void main(String[] args) {
      Dog d1 = new Dog();
      d1.displayInfo();
   }
}

Saída :
I am a dog.

No exemplo acima, a subclasse Cão substitui o método displayInfo() da superclasse Animal .

Sempre que chamamos displayInfo() usando o d1 (objeto da subclasse), o método dentro da subclasse é chamado.

Observe que, o displayInfo() é declarado protected no Animais superclasse. O mesmo método tem o public especificador de acesso no Cão subclasse. Isso é possível porque o public fornece acesso maior que o protected .

Substituindo métodos abstratos


Em Java, classes abstratas são criadas para serem a superclasse de outras classes. E, se uma classe contém um método abstrato, é obrigatório substituí-lo.

Aprenderemos mais sobre classes abstratas e sobrescrevendo métodos abstratos em tutoriais posteriores.

Java

  1. Operadores Java
  2. Java try-with-resources
  3. Anotações Java
  4. Tipos de anotação Java
  5. Método String Length () em Java:como encontrar com exemplo
  6. Método Java String indexOf() com substring e exemplos
  7. Método Java String charAt() com exemplo
  8. Método Java String compareTo():​​como usar com exemplos
  9. String Java contém() Método | Verificar substring com exemplo
  10. Java String EndsWith() Método com Exemplo