UTFPR – Campus Curitiba - DAELN
Cursos de Eng. Eletrônica/Eng. da Computação
IF62C - Fundamentos de Programação
Semana 12 – Overloading X Overriding
Prof.a Tânia Preto / Prof. Robinson Vida
Overloading X Overriding (i/iv)


São formas diferentes de manipular um mesmo método;
Override:
◦ É a sobrescrita de método;
◦ Ocorre no processo de herança, onde um método declarado e
implementado na classe pai, pode ser redefinido na classe filha;
◦ Métodos marcados como final, private ou static não são herdados e por
este motivo não podem ser sobrescritos;
◦ Outro ponto importante é que os métodos sobrescritos não podem
declarar um modificador de acesso mais restritivo do que o que foi
sobrescrito. Ex.: se na classe pai um método é protected (pode ser
acessado fora do pacote ao ser herdado), na classe filha o respectivo
método sobrescrito não pode ser default (acessado só no pacote) ou
muito menos private (acessado só na classe);
Overloading X Overriding (ii/iv)

Override – Exemplo 1- Java:
class Musician {
// classe pai
public int yearsOfStruggle;
public void play(int howLong) { //metodo
...
}
public void starve() {
//metodo
...
}
}
class Pianist extends Musician { //classe filha
// override (sobrescrita) do método play
public void play(int howLong) {
...
}
}
Overloading X Overriding (ii/iv)

Override – Exemplo 2- C++:
class Base
{ public:
virtual void DoSomething( ) {
x = x + 5;
}
private:
int x;
};
class Derived : public Base
{ public:
virtual void DoSomething( ) { //sobreescreve o anterior
y = y + 5;
//acrescenta comando
Base::DoSomething(); // invoca método da classe base
}
private:
int y;
};
Overloading X Overriding (ii/iv)

Overload:
◦ É a sobrecarga de método;
◦ Os métodos sobrecarregados contém o mesmo nome, mas com tipos
de parâmetros e/ou retornos diferentes;
◦ Não é o mesmo método (pois varia nos parâmetros e/ou retorno) e
não sobrescreve o método pai;
◦ Métodos sobrecarregados podem ser usados na mesma classe ou
subclasse, oferecendo mais opções aos usuários;
◦ Soluções mais elegantes podem ser obtidas a partir do uso de
sobrecarga conforme mostra o exemplo 1;
◦ Construtor pode ser usado dentro de construtor na definição de novos
métodos sobrecarregados, conforme exemplo 2;
Overloading X Overriding (ii/iv)

Overload - Exemplo 1 java - - Sobrecarga oferecendo nova solução:
Seja uma implementação de métodos para mostrar na tela diferentes tipos de
dados:
public class DataShow { ...
public void showString(String s) {
...
}
public void showInt(int i) {
...
}
public void showDouble(double f) {
...
}
public void showIntDouble(int i, double f) {
...
}
} // Neste exemplo foi usado um método diferente para cada tipo.
Overloading X Overriding (ii/iv)

Overload - Exemplo 1 - cont. - Implementação reescrita usando o
conceito de overload:
public class DataShow { ...
public void show(String s) {
...
}
public void show(int i) {
...
}
public void show(double f) {
...
}
public void show(int i, double f) {
...
}
}
Overloading X Overriding (ii/iv)

Overload - Exemplo 2 – Java - Sobrecarga de método construtor
public class A
{
public A(int x, float y) { //construtor 1
this(y); // usa construtor 2...
}
public A(float x) { // construtor 2
this((int)x, x); // usa construtor 1...
...
}
}
Overloading X Overriding (ii/iv)

Overload - Exemplo 3 – C++ Sobrecarga
public class Test {
public static void calcular(int x, int y){
System.out.println(“dois numeros: ” + (x+ y));
}
public static void calcular(int x, int y, int z){
System.out.println(“tres numeros: ” + (x+ y+ z));
}
public static void main(String [] args){
int a = 10;
int b = 20;
int c = 30;
calcular(b,c); // mostra: dois numeros: 50
calcular(b,c,a); // mostra: tres numeros: 60
}
}
Download

IF62C - Fundamentos de Programação