Duvida em extends

1 resposta
P

Olá pessoal ,

agora travei porque o resultado abaixo deu "SuperSuperBase"

não entendi .....

Se alguém puder me ajudar agradeceria ....pois estava estudando

e vi alguns exemplos que quando instanciava uma classe e metodo

que chamava era o que estavamos chamando mas com o exemplo abaixo

todo esse conceito caiu pra baixo .....

abs

class SuperBase {
	void print (SuperBase a ){
		System.out.print("Super");
	}
}

class Base extends SuperBase {
	void print (Base b){
		System.out.print("Base");
	}
}

class Derived extends Base {
	static void print (Derived c){
		
	   System.out.print("Derived");
	}
}
public class Test {
	public static void main(String[] args) {

		SuperBase a1 = new SuperBase();
		SuperBase b1 = new Base();
		Base      c1 = new Derived();
		
		a1.print(new Base());
		
		b1.print(new Derived());
		c1.print(new Derived());
		
		
	}

}

1 Resposta

FieroddPJ

Bom … eu acho o seguinte:

os metodos utilizados foram os das classes declaradas, (Super, Super, Base) e esses metodos foram utilizados pq nao foram sobrescritos nas subclasses, como o relacionamento por herança implica a aquisição dos metodos da super classe na subclasse, ou seja a classe base possui o metodo print(SuperBase a), entao esse é utilizado.

a declaração SuperBase base = new Base(), diz q vc tem um objeto Base, porem so estao disponiveis pra uso os metodos publicados na super classe, do mesmo modo q quando vc declara um tipo pela interface (List list = new LinkedList()), vc so pode utilizar metodos publicados na interface

entendeu?

Criado 6 de agosto de 2006
Ultima resposta 6 de ago. de 2006
Respostas 1
Participantes 2