O documento discute sobrepolimorfismo, sobrecarga e sobrescrita de métodos em Java. A sobrecarga permite métodos com mesmo nome mas parâmetros diferentes, enquanto a sobrescrita substitui o comportamento de métodos herdados. O polimorfismo permite tratar objetos de subclasses de forma genérica através da herança.
2. Sobrecarga de métodos e construtores
• A sobrecarga (overload em inglês) é a
implementação, em uma mesma classe ou em
classes ligadas pelo mecanismo de herança, de
duas ou mais versões para um mesmo método, de
modo que manifestem comportamentos distintos.
• Sobrecarregar um método é escrever métodos com
nomes iguais, porém, com quantidade e tipos de
parâmetros de entrada diferentes.
Prof. Ramiro Victor 2
4. Sobrescrita de métodos e construtores
Se um método herdado não satisfaz, podemos redefini-lo
(sobrescrevê-lo)
• A sobrescrita (override em inglês) é a
implementação de métodos em subclasses que
possuem o mesmo nome e mesma assinatura de
métodos de sua superclasse, de tal forma que anule
o comportamento que ele apresentava em sua
superclasse ou apenas acrescente novas instruções.
Prof. Ramiro Victor 4
5. Sobrescrita métodos e construtores
• exemplo da sobrescrita de métodos
Prof. Ramiro Victor 5
6. Sobrescrita e sobrecarga de métodos e
construtores
• A classe Object possui um método chamado
toString(), que tem como objetivo retornar uma
representação em String do objeto em questão.
• Segundo o javadoc, é recomendado que todas as
subclasses sobrescrevam este método.
Prof. Ramiro Victor 6
9. Polimorfismo
• Polimorfismo é uma palavra de origem grega que
significa muitas formas.
Característica de Orientação a Objetos na qual
se admite tratamento idêntico para objetos
diferentes baseado em relações de semelhança;
Em outras palavras, onde uma classe base é
esperada, aceita-se qualquer uma de suas
subclasses
• Também acontece quando subtipos herdam um
comportamento de um supertipo, porém o
executam de forma diferenciada.
Prof. Ramiro Victor 9
11. Polimorfismo
Prof. Ramiro Victor 11
Public class Forma {
public void desenhar() {
System.out.println("Forma");
}
}
public class Quadrado extends Forma{
public void desenhar(){
System.out.println(“Quadrado”);
}
}
public class Circulo extends Forma{
public void desenhar(){
System.out.println(“Circulo”);
}
}