Isso aqui é o construtor da classe?

6 respostas
R

Estou estudando java utilizando swing para gerar as janelas. Me deparei com o seguinte código:

import javax.swing.*;

public class PrimeiraJanela extends JFrame{

  public PrimeiraJanela(){
    super("Nossa primeira janela");
    setSize(300, 150);
    setVisible(true);
  }

  public static void main(String args[]){
    PrimeiraJanela app = new PrimeiraJanela();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

}

Lá no "main" eu atribuo a "app" uma nova referência a um objeto da classe "PrimeiraJanela", certo?

A "public PrimeiraJanela()" é executada nesse momento em que eu crio uma instância da classe "PrimeiraJanela", certo?

Então para fazer um construtor eu tenho que criar uma rotina pública com o mesmo nome da classe? É essa a regra?

Grato pela ajuda!

6 Respostas

T

Sim senhor, mas a diferença entre um método clássico e um construtor é que um construtor não tem um tipo de retorno (você pode até escrever algo como "public void PrimeiraJanela() " e isso compilar, mas não é um construtor, e sim um método cujo tipo de retorno é “void”.)

Andre_Fonseca

Oi,

Para ser construtor ele tem que ter o mesmo nome da classe, possuir o modificador public ou private, NÃO pode retornar nada, e pode possuir 0 ou mais parâmetros…

Por exemplo, a classe MinhaClasse pode ter os construtores:

private MinhaClasse(int param1, int param2, String param)
public MinhaClasse(double param1, …)

e por ai vai…

joca_java

André Fonseca:
Oi,

Para ser construtor ele tem que ter o mesmo nome da classe, possuir o modificador public ou private, NÃO pode retornar nada, e pode possuir 0 ou mais parâmetros…

Por exemplo, a classe MinhaClasse pode ter os construtores:

private MinhaClasse(int param1, int param2, String param)
public MinhaClasse(double param1, …)

e por ai vai…

Para ser construtor ele também pode não possuir modificador e ter o modificador protected tb… desde que siga as outras regras que você mencionou :wink:

R

obrigado a todos pelas respostas.

t+!

B

o construtor já está feito, é o:

public PrimeiraJanela(){

super(“Nossa primeira janela”);

setSize(300, 150);

setVisible(true);

}

Andre_Fonseca

é verdade, vc pode ter qualquer modificador de tipo em um construtor: private, public, protected ou default (package = sem modificador)

outras coisas que vi no head first da kathy: (pode ajudar alguem que for prestar certificação pra programmer)

[list]Se você não declarar explicitamente um construtor o compilador irá criar um default sem parâmetros[/list]

[list]Se você declarar explicitamente um construtor o construtor no-arg não será criado, ou seja, se na minha classe Banana eu declarar Banana(int param) o construtor Banana() NÃO será criado[/list]

[list]Todo construtor deve ter na primeira linha uma chamada para o construtor default this() ou para o construtor da super-classe super()[/list]

[list]Se você não colocar nada o compilador irá automaticamente colocar uma chamada para o construtor da super-classe usando super() - construtor no-arg da super-classe[/list]

[list]Você pode declarar o seu próprio construtor no-arg[/list]

[list]Você não pode chamar um método ou acessar uma variável de instância até que o construtor da super-classe seja executado[/list]

[list]Você pode acessar variáveis estáticas e métodos como parte da chamada do this() ou super(). Por exemplo: super(Animal.fazAlgumaCoisa())[/list]

[list]Classes abstratas possuem construtores e esses são sempre chamados quando a subclasse que as implementa é instanciada[/list]

[list]Interfaces NÃO tem construtores, elas não fazem parte da herança, ou seja, classes de heranças diferentes podem implementar a mesma interface[/list]

[list]Um construtor só pode ser invocado dentro de outro construtor, é ilegal fazer o seguinte:[/list]

classe Cavalo { Cavalo(); // construtor void fazAlgo() { Cavalo(); // chamando o construtor dentro do método } }

Criado 8 de fevereiro de 2008
Ultima resposta 8 de fev. de 2008
Respostas 6
Participantes 5