Uma instância de uma classe é criada chamando seu construtor através do operador new.
Um construtor é um tipo especial de método cujo objetivo é inicializar uma instância recém-criada.
Construtores se parecem com métodos comuns, mas sem um tipo de retorno e com um nome que corresponde ao nome da classe.
class Library {
private int books;
public Library() {
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
Assim como métodos comuns, construtores podem ter parâmetros. Os parâmetros do construtor geralmente são armazenados como campos (privados) campos para serem acessados depois, ou então usados em algum cálculo único. Argumentos podem ser passados a construtores da mesma forma que argumentos são passados a métodos comuns.
class Building {
private int numberOfStories;
private int totalHeight;
public Building(int numberOfStories, double storyHeight) {
this.numberOfStories = numberOfStories;
this.totalHeight = numberOfStories * storyHeight;
}
}
// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2)
Especificar um construtor é opcional. Se nenhum construtor for especificado, o compilador gera um construtor sem parâmetros:
class Elevator {
}
// This will call the (empty) generated constructor
var elevator = new Elevator();
Se os campos tiverem um valor inicial atribuído a eles, o compilador vai gerar um código em que a atribuição é feita dentro do construtor. As declarações de classe a seguir são, portanto, equivalentes (em termos de funcionalidade):
class UsingFieldInitialization {
private int players = 5;
}
class UsingConstructorInitialization {
private int players;
public UsingConstructorInitialization() {
players = 5;
}
}