Como vai,
Vi este termo sendo utilizado em um material da PUC-RIO e o exemplo é:
class Heranca {
public static void main (String arg[]) {
Base base = new Base();
Derivada derivada = new Derivada();
Base baseDerivada = new Derivada();
int x = base.i;
int y = derivada.i;
int z = baseDerivada.i;
String xstr = base.teste();
String ystr = derivada.teste();
String zstr = baseDerivada.teste();
System.out.println("Teste de Herança");
System.out.println("Propriedades => "+x+" - "+y+" - "+z);
System.out.println("Metodos => "+xstr+" - "+ystr+" - "+zstr);
}
Temos as classes :
class Base {
int i = 1;
String teste() {
return "Base";
}
}
class Derivada extends Base {
int i = 2;
String teste() {
return "Derivada";
}
}
Quando utilizamos o main da classe Heranca o resultado é
Teste de Herança
Propriedades => 1 - 2 - 1
Metodos => Base - Derivada - Derivada
O que na verdade acontece quando se faz:
Base baseDerivada = new Derivada();
Estou declarando uma variável do tipo Base e inicializado-a com um novo Objeto da classe Derivada. É isso mesmo?
E esse conceito de “Sombreamento de propriedades e métodos”, aguém conhece?
Obrigado,
o número 2, pois esse método está pegando o atributo que esta com o valor 2, quando eu acesso o atributo diretamente ele esta com 1?