Ajuda?

4 respostas
faicoxim
import java.awt.Graphics;
import javax.swing.JApplet;

public class DoWhileTest extends JApplet
{
	public void paint (Graphics g)
	{
		super.paint(g);    -----> Aqui o ([b]super[/b]) tem qual finalidade?
		int counter = 1;
		
		do
		{
			g.drawOval(110 - counter * 10, 110 - counter * 10, counter * 20, counter * 20);
			++counter;
			
		}
		while ( counter <= 10 );
	}
}

O super alí em cima selecionado, qual a finalidade dele? seu que ele chama o metodo paint com parametro g, mas porque o super???

4 Respostas

lgi2020

A palavra-chave super faz referência à superclasse.

Abraços.

A

Seguinte, cara… se vc colocasse paint(g) sem o super, vc estaria chamando o paint da propria classe. O que tornaria o método recursivo e rapidamente criaria um estouro de pilha.

A intenção do código é executar o comportamento do método paint da classe pai dentro da classe filha. Entao o super é usado para indicar ao compilador que o método paint que vc quer executar é o da classe pai e não o da própria classe.

Abs

Tsunami1

facoxim, acho que entendi a sua pergunta… Vc sabe o que o super faz, mas no caso especifico de uma Applet você não entende pra que ele serve já que vc está declarando o método paint aqui…

Me corrijam se eu estiver errado por favor…

O método paint da superclasse JApplet faz procedimentos que devem ser feitos sempre que o paint é chamado e o seu paint é uma versão melhorada do paint da superclasse, ou seja, ele deve fazer as coisas básicas (por isso chama a super: super.paint(g)) e depois que concluir lá ele continua a fazer o que vc programou…

Vou tentar dar um exemplo bem simples aqui:

Supondo uma superclasse que tem o método imprimeVetor. E uma subclasse que herda esse imprimeVetor.
Porém é uma formalidade desse método que todovetor imprimido esteja ordenado de forma crescente, o método imprimeVetor da superclasse ordena o vetor antes de qualquer coisa.

public void imprimeVetor(int[] vetor)
{
	super.imprimeVetor(vetor); // vc chama a super, passando o vetor, pra que a super faça as operações de "regra", que nesse caso é ordenar um vetor.

	for (int i=0; i<vetor.length; i++)  // laço for pra imprimir o vetor...
	{
		System.out.println (vetor[i]);
	}
}

se vc não tivesse chamado o super.imprimeVetor, o vetor iria ser imprimido desordenado (com isso quebrando uma das “regras” do método).
Isso se tratando de um JApplet pode ocasionar algum erro de formação ou sei lá o que…
No livro do Deitel ele não explica mto bem o porque dessa chamada nesse caso, só diz que precisa ser chamado pra evitar erros…

Se eu estiver falando alguma besteira, por favor me corrijam! Mas acho que é isso…

glauco.todesco

Olá,

Vc sobreescreveu o método paint na sua classe. Veja que a sua classe herda de JApplet e nessa relação de herança alguma classe "SUPERIORA" implementou o método paint. Ao sobreescrever esse método você "MATOU" o método de desenho  do PAI e dessa forma pode ocorrer algum tipo de erro de DESENHO ao executar a sua classe.
  Enfim, o super.paint(g) faz com que o método de desenho de uma das classe "SUPERIORAS" seja executado primeiro, para depois executar o seu desenho.
  []s

Glauco Todesco

Criado 16 de outubro de 2008
Ultima resposta 16 de out. de 2008
Respostas 4
Participantes 5