Utilização do Super

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:

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

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

[code]public class teste {

public teste(){
	
	System.out.println("Construtor");
}

}[/code]

[code]public class teste2 extends teste{

public teste2(){
	
	super();
	System.out.println("Test2 method");
	
}

}[/code]

…o super tambem pode ser usado passando parametro:

super("Value", 12);

Marck

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);
 		
 	}
 	
 }

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);
 		
 	}
 	
 }

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…

[quote=luistiagos]java++ isto compila?

[/quote]

não compila…

:smiley:

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

[code]public test2(int a){

}

public test2(){
super(10);
} [/code]