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…
Usar super explicitamente no construtor quando for o caso de passagem de parametro:
[code]public test2(int a){
}
public test2(){
super(10);
} [/code]