Utilização do Super

7 respostas
pcecchetto

Olá galera, estou implementando uma classe onde devo usar Super, ainda não fiz isso,queria saber a diferença de EXTENDS e SUPER, se são a mesma coisa. A classe é o seguindo dvd’s e cd’s, acho que não entendi bem mais onde posso usar o super, pois utilizaei o extends para fazer a herança entre as duas classes. :roll:

7 Respostas

marcelo_mococa

se existe um relacionamento de herança entre duas classes, a cláusula super é usado na classe filha para invocar métodos e construtores da classe pai.

ex:

class Cd{
   void teste(){
      System.out.println("na classe pai");
   }
}

class Dvd extends Cd{
   void teste(){
     super.teste();
     System.out.println("na classe filha");
   }
}

se você chamar:

new Dvd().teste();

imprimirá:
na classe pai
na classe filha

Marck

...tambem vc pode chamar o contrutor da superclasse a partir do metodo construtor da subclasse com o super:

public class teste {
	
	
	public teste(){
		
		System.out.println("Construtor");
	}
	
	
}
public class teste2 extends teste{
	
	
	public teste2(){
		
		super();
		System.out.println("Test2 method");
		
	}
	
}

...o super tambem pode ser usado passando parametro:

super("Value", 12);

Marck

J

Super também pode ser usado passando propriedades da Classe Mae para a Classe filha

public class teste {
 	
       public String nome = "Ola"; 
 	
 	public teste(){
 		
 		System.out.println("Construtor");
 	}

public class teste2 extends teste{ 	
 	
private String nome;

 	public teste2(){
 		
                nome = super.nome;
 		super();
 		System.out.println("Test2 method"+"Propriedades"+nome);
 		
 	}
 	
 }
J

Super também pode ser usado passando propriedades da Classe Mae para a Classe filha

public class teste {
 	
       public String nome = "Ola"; 
 	
 	public teste(){
 		
 		System.out.println("Construtor");
 	}

public class teste2 extends teste{ 	
 	
private String nome;

 	public teste2(){
 		
                nome = super.nome;
 		super();
 		System.out.println("Test2 method"+"Propriedades"+nome);
 		
 	}
 	
 }
luistiagos

java++ isto compila?

public teste2(){

nome = super.nome;
	super();
	System.out.println("Test2 method"+"Propriedades"+nome);

pois pelo que eu sei super(); deve ser chamado sempre como primeira chamada no construtor… e neste caso nem é necessario invocar super()
pois quando ha uma classe que herda de outra o seu construtor sempre chamara como primeira chamada o super() mesmo que vc não declare super() em seu construtor ou seja em seu construtor:

public test2(){

}

o compilador ve na verdade:

public test2(){

super();

}

mesmo que vc não declare super implicetamente…

marcelo_mococa

luistiagos:
java++ isto compila?

não compila…

Marck
luistiagos:
o compilador ve na verdade:

public test2(){
super();
}

mesmo que vc não declare super implicetamente...

:D

Usar super explicitamente no construtor quando for o caso de passagem de parametro:

public test2(int a){

}


public test2(){
super(10);
}
Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 7
Participantes 5