super
Java não oferece o mecanismo de herança múltipla, ou
seja, não é possível criar uma classe derivada com mais de uma classe
base. Por esse motivo, é simples fazer uma referência da classe
derivada para sua superclasse; o mecanismo para tal é o uso da
palavra-chave super
.
Construtores da superclasse podem ser explicimente invocados usando
o método super()
. No exemplo do
Ponto3D, isso é feito para o
construtor da classe derivada com argumentos:
public Ponto3D(int x, int y, int z) { super(x, y); this.z = z; }
A expressão super(x, y);
na primeira linha do
construtor está invocando o construtor da classe base,
Ponto2D
, que recebe dois argumentos. O efeito dessa
invocação é iniciar os valores dos atributos x
e
y
do objeto com os valores dos parâmetros x
e y
recebidos pelo método construtor.
A invocação do método super()
, se presente, deve
estar na primeira linha. Implicitamente, o compilador faz a
invocação do construtor super()
default (sem
argumentos) para cada construtor definido. Por esse motivo, o segundo
construtor da classe Ponto3D
não faz a invocação desse
método explicitamente. Assim,
public Ponto3D( ) { z = 0; }equivale a
public Ponto3D( ) { super(); z = 0; }
Esse é um dos motivos pelo qual é sempre interessante ter o construtor default definido. Entretanto, a invocação direta pode ser interessante quando se deseja invocar algum construtor que não o default, como no exemplo anterior.
Outro uso dessa palavra-chave é como prefixo para referenciar métodos da superclasse.
©
Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP