Η δημιουργία ενός στιγμιοτύπου μιας κλάσης γίνεται καλώντας τον κατασκευαστή της μέσω του τελεστή new.
Ένας κατασκευαστής είναι ένας ειδικός τύπος μεθόδου με σκοπό να αρχικοποιεί ένα νεοδημιουργημένο στιγμιότυπο.
Οι κατασκευαστές μοιάζουν με κανονικές μεθόδους, αλλά χωρίς τύπο επιστροφής και με όνομα που ταιριάζει με το όνομα της κλάσης.
class Library {
private int books;
public Library() {
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
Όπως οι κανονικές μέθοδοι, έτσι και οι κατασκευαστές μπορούν να έχουν παραμέτρους. Οι παράμετροι του κατασκευαστή συνήθως αποθηκεύονται ως (ιδιωτικά) πεδία για να έχεις πρόσβαση σε αυτά αργότερα, ή αλλιώς χρησιμοποιούνται σε κάποιον υπολογισμό που γίνεται μία φορά. Μπορείς να περάσεις ορίσματα σε κατασκευαστές ακριβώς όπως περνάς ορίσματα σε κανονικές μεθόδους.
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)
Ο καθορισμός ενός κατασκευαστή είναι προαιρετικός. Αν δεν καθοριστεί κανένας κατασκευαστής, ο μεταγλωττιστής δημιουργεί έναν κατασκευαστή χωρίς παραμέτρους:
class Elevator {
}
// This will call the (empty) generated constructor
var elevator = new Elevator();
Αν στα πεδία έχει ανατεθεί μια αρχική τιμή, ο μεταγλωττιστής θα παράγει κώδικα στον οποίο η ανάθεση γίνεται στην πραγματικότητα μέσα στον κατασκευαστή. Οι ακόλουθες δηλώσεις κλάσεων είναι επομένως ισοδύναμες (ως προς τη λειτουργικότητα):
class UsingFieldInitialization {
private int players = 5;
}
class UsingConstructorInitialization {
private int players;
public UsingConstructorInitialization() {
players = 5;
}
}