2
respostas

Dúvida sobre construtores

Havia entendido primeiramente não poderia ter mais de um construtor por classe no inicio da explicação dos construtores, mas no final aparece o exemplo dos carros e aparecem dois construtores. Afinal, pode ou não pode ter mais de um construtor? Qual a finalidade de ter mais de um construtor?

2 respostas

Bom dia Natalia, O (pseudo-)método construtor determina que ações devem ser executadas quando da criação de um objeto. Em Java, o construtor é definido como um método cujo nome deve ser o mesmo nome da classe e sem indicação do tipo de retorno -- nem mesmo void. O construtor é unicamente invocado no momento da criação do objeto através do operador new.

O construtor pode receber argumentos, como qualquer método. Usando o mecanismo de sobrecarga, mais de um construtor pode ser definido para uma classe.

Toda classe tem pelo menos um construtor sempre definido. Se nenhum construtor for explicitamente definido pelo programador da classe, um construtor padrão, que não recebe argumentos, é incluído para a classe pelo compilador Java.

Dá uma olhada nessa documentação da Oracle sobre a Classe Publica Point onde ela tem 3 construtores.

https://docs.oracle.com/javase/8/docs/api/java/awt/Point.html#Point--

Bora Estudar Dev!

Ola Natalia,

Em java pode haver sim mais de um construtor na classe, o nome disso se chama sobrecarga, entretanto esses construtores não podem ter o mesmo tipo e a mesma quantidade de argumentos. Exemplo:

Classe(){}
Classe(int valor){}
Classe(int valor, int outroValor){}
Classe(double valor){}

O que não pode fazer é ter dois construtores iguais. Exemplo:

Classe(int valor){}
Classe(int valor ){}

A finalidade de ter mais de um construtor é que você pode querer inicializar apenas alguns atributos na construção da classe.

Você pode fazer isso com qualquer método da classe, não é exclusivo para construtores.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software