Como criar construtores em java

Video: Programação Orientada a Objetos (Parte 1): classes, construtores e métodos de acesso

UMA construtor é um bloco de código que é chamado quando uma instância de um objeto é criado em Java. De muitas maneiras, um construtor é semelhante a um método, mas existem algumas diferenças:

  • Um construtor não tem um tipo de retorno.

  • O nome do construtor deve ser o mesmo que o nome da classe.

  • Ao contrário dos métodos, os construtores não são considerados membros de uma classe. (Isso é importante somente quando se trata de herança.)

  • Um construtor é chamado quando uma nova instância de um objeto é criado. Na verdade, é a nova palavra-chave que chama o construtor. Depois de criar o objeto, você não pode chamar o construtor novamente.

Aqui está o formato básico para a codificação de um construtor:

público Nome da classe (parâmetro-lista) [Lança exceção...] {afirmações...}

A palavra-chave pública indica que outras classes podem acessar o construtor. Isso é geralmente o que você quer, mas você pode querer criar um construtor privado. Nome da classe deve ser o mesmo que o nome da classe que contém o construtor. Você codificar a lista de parâmetros da mesma maneira que você codificá-lo para um método.

Observe também que um construtor pode lançar exceções se encontra situações que não pode recuperar.

Criando construtores básicos

Provavelmente o motivo mais comum para a codificação de um construtor é fornecer valores iniciais para os campos de classe quando você cria o objeto. Suponha que você tem uma classe ator chamado que tem campos chamados nome e sobrenome. Você pode criar um construtor para a classe Actor:

Ator pública (String primeiro, String passado) {firstName = first-lastName = de último}

Em seguida, você cria uma instância da classe Actor chamando esse construtor:

Ator a = new Ator ("Arnold", "Schwarzenegger") -

Um novo objeto Ator por Arnold Schwarzenegger é criado.

Como métodos, construtores podem ser sobrecarregados. Em outras palavras, você pode fornecer mais do que um construtor de uma classe, desde que cada construtor tem uma assinatura única. Aqui está um outro construtor para a classe Actor:

Ator pública (String primeiro, String passado, boolean bom) {firstName = first-lastName = última goodActor = bom-}

Esse construtor permite criar um objeto Ator com informações além do nome do ator:

Ator a = new Ator ("Arnold", "Schwarzenegger", False) -

Criação de construtores padrão

Cada classe tem direito a um construtor. Se você não fornecer um construtor, Java nomeia um para você, gratuitamente. Este construtor livre é chamado de construtor padrão. Ele não aceita nenhum parâmetro e não faz nada, mas permite que a classe a ser instanciado.



Assim, as duas classes seguintes são idênticos:

pública Class1 {Class1 pública () {}} Class1 pública {}

No primeiro exemplo, a classe declara explicitamente um construtor que não aceita nenhum parâmetro e não tem declarações em seu corpo. No segundo exemplo, Java cria um construtor padrão que funciona exatamente como o construtor mostrado no primeiro exemplo.

O construtor padrão é não criado se você declarar quaisquer construtores para a classe. Como resultado, se você declarar um construtor que aceita parâmetros e ainda quer ter um construtor vazio (sem parâmetros e nenhum corpo), você deve declarar explicitamente um construtor vazio para a classe.

Um exemplo pode esclarecer este ponto para cima. O código a seguir faz não compilar:

classe pública BadActorApp {public static void main (String [] args) {Ator a = new Ator () - // erro: não irá compilar}} class Ator {private String lastName-privada boolean Ator Cordas firstName-privada goodActor-pública (string passado, string primeiro) {lastName = última firstName = primeiro-} Ator pública (string passado, string first, boolean bom) {lastName = última firstName = first-goodActor = bom-}}

Este programa não irá compilar porque não prevê explicitamente um construtor padrão para a aula Ator porque prevê outros construtores, o construtor padrão não é gerado automaticamente.

Chamando outros construtores

Um construtor pode chamar outro construtor da mesma classe usando a palavra-chave especial isso como uma chamada de método. Esta técnica é comumente usado quando você tem vários construtores que constroem um sobre o outro.

Considere esta classe:

classe Actor pública {private String Ator lastName-privada Cordas firstName-privada boolean goodActor-pública (String passado, String primeiro) {lastName = última firstName = primeiro-} Ator pública (String passado, String first, boolean bom) {this ( último, em primeiro lugar) -goodActor = bom-}}

Aqui, o segundo construtor chama o primeiro construtor para definir os campos lastName e firstName. Em seguida, ele define o campo goodActor.

Video: Curso de Java 33 - Orientação a Objetos: Sobrecarga de métodos e construtores (overload)

Você tem algumas restrições em usar a palavra-chave como uma chamada de construtor:

  • Você pode chamar outro construtor somente na primeira declaração de um construtor. Assim, o seguinte código não irá compilar:

     Ator pública (String passado, String first, boolean bom) {goodActor = bom-este (último, primeiro) -  // erro: não irá compilar}

    Se você tenta compilar uma classe com esse construtor, você receber uma mensagem dizendo chamada para esta deve ser a primeira instrução no construtor.

  • Cada construtor pode chamar apenas um outro construtor, mas você pode construtores cadeia. Se uma classe tem três construtores, o primeiro construtor pode chamar o segundo, que por sua vez chama o terceiro.

  • Você não pode criar loops em que construtores chamam um ao outro. Aqui está uma classe que não irá compilar:

    classe CrazyClass{ Private String firstString- Private String secondString- pública CrazyClass (String primeiro, String segundo) { este (primeiro) - secondString = segunda } pública CrazyClass (String primeiro) { este (primeiro, "PADRÃO") - // erro: não vai// compile }}

    O primeiro construtor começa chamando o segundo construtor, que chama o primeiro construtor. O compilador reclama que este erro é uma invocação construtor recursiva e educadamente se recusa a compilar a classe.

Se você não chamar explicitamente um construtor na primeira linha de um construtor, Java insere um código que chama automaticamente o construtor padrão da classe base - ou seja, a classe que esta classe herda.


Publicações relacionadas