comecei a estudar Java fazem 3 semanas, através do livro Java Como Programar - 4ª edição, H. M. Deitel e P. J. Deitel. Estou no [color=blue]capítulo 6 - Métodos[/color]. E no exercício 6.3:
/* Applet exemplificando o uso de métodos */
// Um método de cálculo de quadrados, definido pelo programador
// Fig. 6.3 - pags. 264 e 265
// Pacotes do núcleo de Java
import java.awt.Container;
// Pacotes de extensão de Java
import javax.swing.*;
public class SquareIntegers extends JApplet {
// prepara a GUI e calcula quadrados de inteiros de 1 a 10
public void init()
{
// JTextArea para exibir resultados
JTextArea areaDeSaida = new JTextArea();
// obtém painel de conteúdo do applet (Área de exibição de componentes GUI)
Container container = getContentPane(); // que bicho é esse???
// anexa areaDeSaida ao Container
container.add( areaDeSaida );
int resultado; // armazena o resultado da chamada para o método square
String saida = "";
// repete 10 vezes
for (int contador = 1; contador <= 10; contador++) {
// calcula o quadrado de contador e armazena em resultado
resultado = square( contador );
// acrescenta resultado ao String sa�da
saida += "O quadrado de " + contador + " é "
+ resultado + "\n";
} // fim da estrutura for
areaDeSaida.setText( saida );
} // fim do método init()
// definição do método square
public int square( int y )
{
return y * y;
}
// fim do método square
} // fim da classe public SquareIntegers
na [size=18]linha 21[/size].
Minha pergunta é: [color=red]Como é possível usar um método de uma classe através de uma variável de referência, sem antes instanciar a classe com new???[/color]
O correto não seria fazer:
Container container = new Container();
container.getContentPane();
[quote=rogelgarcia]getContentPane() tá na classe que vc extendeu… lá vai chamar um método que chama outro que chama outro e em algum lugar vai ter um new
(uma caracteristica que eu nao gosto nesse livro sao os applets…)[/quote]
Hhehehehe … chega a ser engraçado, mas acontece que esse é um dos primeiros livros sobre Java, e na época Applets eram a promessa. Eu tenho a 2 edicao em ingles desse livro (comprei por 10 reais em uma feira em São Paulo) e tem uma ênfase exagerada nos recursos de multimídia e bibliotecas gráficas, como Java2D. Na época, (do livro, não quando comprei) nem Swing existia.
[quote=rmendes08][quote=rogelgarcia]getContentPane() tá na classe que vc extendeu… lá vai chamar um método que chama outro que chama outro e em algum lugar vai ter um new
(uma caracteristica que eu nao gosto nesse livro sao os applets…)[/quote]
Hhehehehe … chega a ser engraçado, mas acontece que esse é um dos primeiros livros sobre Java, e na época Applets eram a promessa. Eu tenho a 2 edicao em ingles desse livro (comprei por 10 reais em uma feira em São Paulo) e tem uma ênfase exagerada nos recursos de multimídia e bibliotecas gráficas, como Java2D. Na época, (do livro, não quando comprei) nem Swing existia.[/quote]
É justamente por isso que nao gosto… utiliza coisas de 10 anos atrás…
É tipo isso que acontece ali… O pai já escreveu o método, então o filho só reaproveita…
Aconselharia dar uma lida sobre herança…
public class Pai {
public void metodoImplementadoNoPai() {
System.out.println("Método do Pai.");
}
}
class Filho extends Pai {
public void metodoImplementadoNoFilho() {
super.metodoImplementadoNoPai();
}
}
Obrigado pelas respostas. Ainda não cheguei no capítulo que trata de Herança. Mas de um modo geral, o [color=blue]new[/color] não foi usado porque o método está dentro do init() como no caso do square() ou nada a ver?