Construtor
Como simplificar a inicialização de uma classe?
Iniciar cada campo todas as vezes pode ser tedioso. Para tais propósitos, as classes possuem construtores. A sintaxe para um construtor é a seguinte:
Main.java
Vamos analisar cada palavra escrita aqui:
modifier
: Isso se refere ao modificador de acesso, que geralmente épublic
para construtores. Casos em que um construtor pode ter um modificador de acesso diferente serão abordados em um curso separado;ClassName
: Este é simplesmente o nome da classe na qual você está criando este construtor;ParameterType
: Este é o tipo de parâmetro que será usado no construtor. É importante prestar atenção aqui, pois esse parâmetro deve ser do mesmo tipo que o campo na classe; Por exemplo: Se a classe tem dois parâmetros,String name
eint age
, então o construtor deve ter os mesmos parâmetros (se quisermos inicializar todos os campos por meio do construtor). Se quisermos inicializar apenas um campo específico da classe através do construtor, por exemplo,name
, então devemos usar apenas um parâmetro do mesmo tipo e nome que o campo na classe;- Em seguida, dentro do corpo do construtor, atribuímos valores aos campos da classe usando os valores passados no parâmetro.
Palavra-chave "this"
Com a ajuda da palavra-chave this
, podemos nos referir ao campo da classe no qual escrevemos o valor desta palavra-chave. Por exemplo, quando temos uma classe com dois campos: name
e age
, podemos escrever this.name
dentro do construtor ou de um método, e isto se referirá especificamente ao campo da classe, não à variável local que é passada como parâmetro para aquele construtor ou método. Desta forma, podemos inicializar os campos da classe através do construtor usando a sintaxe: this.name = name;
.
Exemplo
Vejamos um exemplo de um construtor em uma classe que ajudará a inicializar todos os campos para tornar isso mais claro:
Person.java
Temos uma classe chamada Person
com três campos. Cada um desses campos foi adicionado ao construtor usando a palavra-chave this
. Portanto, o construtor inicializa os campos com os valores dos parâmetros. Vamos usar este construtor no método main
para que você possa ver que os campos são inicializados com o que passamos como parâmetros:
Main.java
Inicializamos o objeto Person
chamado bob
usando o construtor, passando name
, age
e gender
como parâmetros. Em seguida, imprimimos seus parâmetros na tela e vemos que o objeto possui valores de campos conforme especificado nos parâmetros do construtor.
Sobrecarga de construtores
O construtor também pode ser sobrecarregado e não abranger a inicialização de todos os campos da classe. Por exemplo, se não quisermos especificar o gênero de Alice, podemos sobrecarregar o construtor para aceitar apenas 2 parâmetros e inicializar os campos com eles:
Main.java
Pode-se concluir que um construtor, como um método, pode ser sobrecarregado e aceitar diferentes números e tipos de parâmetros.
Construtor padrão
Um construtor padrão é um construtor que não leva parâmetros e não inicializa nenhum campo. Ele existe em todas as classes por padrão se elas não tiverem qualquer outro tipo de construtor, razão pela qual é chamado de construtor padrão. Toda vez que criamos um objeto de qualquer classe, utilizamos um construtor. Para usar o construtor padrão quando já temos um construtor que aceita parâmetros, precisamos também escrever um construtor vazio:
Main.java
Utilizamos 3 construtores diferentes para inicializar cada um dos objetos Person
. Como podemos ver no último exemplo, John
não possui nome ou idade porque estes campos não são inicializados para o objeto. Assim, podemos sobrecarregar o construtor tantas vezes quanto necessário e criar objetos por meio dele.
Qual das seguintes afirmações sobre construtores é verdadeira?
Selecione algumas respostas corretas
Tudo estava claro?
Conteúdo do Curso
Java Extended
Java Extended
Construtor
Como simplificar a inicialização de uma classe?
Iniciar cada campo todas as vezes pode ser tedioso. Para tais propósitos, as classes possuem construtores. A sintaxe para um construtor é a seguinte:
Main.java
Vamos analisar cada palavra escrita aqui:
modifier
: Isso se refere ao modificador de acesso, que geralmente épublic
para construtores. Casos em que um construtor pode ter um modificador de acesso diferente serão abordados em um curso separado;ClassName
: Este é simplesmente o nome da classe na qual você está criando este construtor;ParameterType
: Este é o tipo de parâmetro que será usado no construtor. É importante prestar atenção aqui, pois esse parâmetro deve ser do mesmo tipo que o campo na classe; Por exemplo: Se a classe tem dois parâmetros,String name
eint age
, então o construtor deve ter os mesmos parâmetros (se quisermos inicializar todos os campos por meio do construtor). Se quisermos inicializar apenas um campo específico da classe através do construtor, por exemplo,name
, então devemos usar apenas um parâmetro do mesmo tipo e nome que o campo na classe;- Em seguida, dentro do corpo do construtor, atribuímos valores aos campos da classe usando os valores passados no parâmetro.
Palavra-chave "this"
Com a ajuda da palavra-chave this
, podemos nos referir ao campo da classe no qual escrevemos o valor desta palavra-chave. Por exemplo, quando temos uma classe com dois campos: name
e age
, podemos escrever this.name
dentro do construtor ou de um método, e isto se referirá especificamente ao campo da classe, não à variável local que é passada como parâmetro para aquele construtor ou método. Desta forma, podemos inicializar os campos da classe através do construtor usando a sintaxe: this.name = name;
.
Exemplo
Vejamos um exemplo de um construtor em uma classe que ajudará a inicializar todos os campos para tornar isso mais claro:
Person.java
Temos uma classe chamada Person
com três campos. Cada um desses campos foi adicionado ao construtor usando a palavra-chave this
. Portanto, o construtor inicializa os campos com os valores dos parâmetros. Vamos usar este construtor no método main
para que você possa ver que os campos são inicializados com o que passamos como parâmetros:
Main.java
Inicializamos o objeto Person
chamado bob
usando o construtor, passando name
, age
e gender
como parâmetros. Em seguida, imprimimos seus parâmetros na tela e vemos que o objeto possui valores de campos conforme especificado nos parâmetros do construtor.
Sobrecarga de construtores
O construtor também pode ser sobrecarregado e não abranger a inicialização de todos os campos da classe. Por exemplo, se não quisermos especificar o gênero de Alice, podemos sobrecarregar o construtor para aceitar apenas 2 parâmetros e inicializar os campos com eles:
Main.java
Pode-se concluir que um construtor, como um método, pode ser sobrecarregado e aceitar diferentes números e tipos de parâmetros.
Construtor padrão
Um construtor padrão é um construtor que não leva parâmetros e não inicializa nenhum campo. Ele existe em todas as classes por padrão se elas não tiverem qualquer outro tipo de construtor, razão pela qual é chamado de construtor padrão. Toda vez que criamos um objeto de qualquer classe, utilizamos um construtor. Para usar o construtor padrão quando já temos um construtor que aceita parâmetros, precisamos também escrever um construtor vazio:
Main.java
Utilizamos 3 construtores diferentes para inicializar cada um dos objetos Person
. Como podemos ver no último exemplo, John
não possui nome ou idade porque estes campos não são inicializados para o objeto. Assim, podemos sobrecarregar o construtor tantas vezes quanto necessário e criar objetos por meio dele.
Qual das seguintes afirmações sobre construtores é verdadeira?
Selecione algumas respostas corretas
Tudo estava claro?