Étant donné cet extrait de code, pourriez-vous expliquer pourquoi il woks? Le fait est que le constructeur de la classe est marqué privé, donc cela ne devrait-il pas nous empêcher de l'appeler avec un nouvel opérateur?Portée privée du constructeur
public class Alpha {
protected Alpha() {}
}
class SubAlpha extends Alpha {
private SubAlpha() {System.out.println("ok");}
public static void main(String args[]) {
new SubAlpha();
}
}
Tout fonctionne parce que la méthode statique fait partie de la classe et peut voir tous les champs et méthodes privés, non? En dehors de cette "nouvelle" initialisation ne marcherait jamais?