Herança e Composição/Definição Simples de Superclasse e Subclasse
From Wiki**3
Classe SuperClasse
A classe SuperClasse representa o conceito mais geral, que irá ser posteriormente especializado.
São apresentados dois cenários para ilustrar o comportamento na iniciação de um atributo declarado final.
Cenário A
No cenário A, o atributo é declarado, mas não tem um iniciador por omissão explÃcito. Por isso, é possÃvel definir no construtor o seu valor.
public class SuperClasse {
private int _a = 78;
protected final int _x; // cenário A
SuperClasse(int x) {
System.out.println("-- calling SuperClasse.SuperClasse(" + x + ")");
_a = (int)(100*Math.random());
_x = x; // ok: cenário A
}
final int getA() {
System.out.println("-- calling SuperClasse.getA() returns " + _a);
return _a;
}
protected int getX() {
System.out.println("-- calling SuperClasse.getX() returns " + _x);
return _x;
}
}
Cenário B
No cenário A, o atributo é declarado, mas já tem um iniciador por omissão explÃcito. Por isso, já não é possÃvel definir no construtor o seu valor.
public class SuperClasse {
private int _a = 78;
protected final int _x = 93; // iniciação
SuperClasse(int x) {
System.out.println("-- calling SuperClasse.SuperClasse(" + x + ")");
_a = (int)(100*Math.random());
//_x = x; // erro: já está iniciada
}
final int getA() {
System.out.println("-- calling SuperClasse.getA() returns " + _a);
return _a;
}
protected int getX() {
System.out.println("-- calling SuperClasse.getX() returns " + _x);
return _x;
}
}