logo

Substituição de método em Java

  1. Entendendo o problema sem substituir o método
  2. Podemos substituir o método estático
  3. Sobrecarga de método vs. substituição de método

Se a subclasse (classe filha) tiver o mesmo método declarado na classe pai, ela é conhecida como substituição de método em Java .

Em outras palavras, se uma subclasse fornece a implementação específica do método que foi declarado por uma de suas classes pai, isso é conhecido como substituição de método.

Uso de substituição de método Java

  • A substituição de método é usada para fornecer a implementação específica de um método que já é fornecido por sua superclasse.
  • A substituição de método é usada para polimorfismo de tempo de execução

Regras para substituição de método Java

  1. O método deve ter o mesmo nome da classe pai
  2. O método deve ter o mesmo parâmetro da classe pai.
  3. Deve haver um relacionamento IS-A (herança).
Regras Java para substituição de método

Entendendo o problema sem substituir o método

Vamos entender o problema que podemos enfrentar no programa se não usarmos a substituição de métodos.

 //Java Program to demonstrate why we need method overriding //Here, we are calling the method of parent class with child //class object. //Creating a parent class class Vehicle{ void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike extends Vehicle{ public static void main(String args[]){ //creating an instance of child class Bike obj = new Bike(); //calling the method with child class instance obj.run(); } } 
Teste agora

Saída:

 Vehicle is running 

O problema é que preciso fornecer uma implementação específica do método run() na subclasse, por isso usamos a substituição de método.


Exemplo de substituição de método

Neste exemplo, definimos o método run na subclasse conforme definido na classe pai, mas ele possui alguma implementação específica. O nome e o parâmetro do método são iguais e existe um relacionamento IS-A entre as classes, portanto, há substituição de método.

 //Java Program to illustrate the use of Java Method Overriding //Creating a parent class. class Vehicle{ //defining a method void run(){System.out.println('Vehicle is running');} } //Creating a child class class Bike2 extends Vehicle{ //defining the same method as in the parent class void run(){System.out.println('Bike is running safely');} public static void main(String args[]){ Bike2 obj = new Bike2();//creating object obj.run();//calling method } } 
Teste agora

Saída:

 Bike is running safely 

Um exemplo real de substituição de método Java

Considere um cenário onde Bank é uma classe que fornece funcionalidade para obter a taxa de juros. No entanto, a taxa de juros varia de acordo com os bancos. Por exemplo, os bancos SBI, ICICI e AXIS poderiam fornecer taxas de juros de 8%, 7% e 9%.

Método Java substituindo exemplo de banco

A substituição do método Java é usada principalmente no polimorfismo de tempo de execução, que aprenderemos nas próximas páginas.

 //Java Program to demonstrate the real scenario of Java Method Overriding //where three classes are overriding the method of a parent class. //Creating a parent class. class Bank{ int getRateOfInterest(){return 0;} } //Creating child classes. class SBI extends Bank{ int getRateOfInterest(){return 8;} } class ICICI extends Bank{ int getRateOfInterest(){return 7;} } class AXIS extends Bank{ int getRateOfInterest(){return 9;} } //Test class to create objects and call the methods class Test2{ public static void main(String args[]){ SBI s=new SBI(); ICICI i=new ICICI(); AXIS a=new AXIS(); System.out.println('SBI Rate of Interest: '+s.getRateOfInterest()); System.out.println('ICICI Rate of Interest: '+i.getRateOfInterest()); System.out.println('AXIS Rate of Interest: '+a.getRateOfInterest()); } } 
Teste agora
 Output: SBI Rate of Interest: 8 ICICI Rate of Interest: 7 AXIS Rate of Interest: 9 

Podemos substituir o método estático?

Não, um método estático não pode ser substituído. Isso pode ser provado pelo polimorfismo de tempo de execução, então aprenderemos mais tarde.


Por que não podemos substituir o método estático?

É porque o método estático está vinculado à classe, enquanto o método de instância está vinculado a um objeto. Static pertence à área de classe e uma instância pertence à área de heap.


Podemos substituir o método principal java?

Não, porque o main é um método estático.


Diferença entre sobrecarga de método e substituição de método em java

Clique em mim para saber a diferença entre sobrecarga e substituição de método


Mais tópicos sobre substituição de método (não para iniciantes)

Substituição de método com modificador de acesso

Vamos ver o conceito de substituição de método com modificador de acesso.

Tratamento de exceções com substituição de método

Vamos ver o conceito de substituição de método com tratamento de exceções.