Duvida em extends

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

[code]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());
	
	
}

}[/code]

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?