Nehmen wir an, wir haben eine Klasse:Anonym Initialisierung der Klasse mit geschützten Konstruktor
public class SomeClass {
protected SomeClass() {
}
}
In MainClass
in verschiedenen Paket befindet ich versucht, zwei Zeilen auszuführen:
public static void main(String[] args) {
SomeClass sac1 = new SomeClass();
SomeClass sac2 = new SomeClass() {};
}
Wegen protected
Konstruktor in In beiden Fällen erwartete ich, dass das Programm fehlschlägt. Zu meiner Überraschung funktionierte die anonyme Initialisierung gut. Könnte mir jemand erklären, warum die zweite Methode der Initialisierung in Ordnung ist?
Zu meiner großen Überraschung passiert das Gleiche, wenn Sie einen Konstruktor verwenden, der Argumente hat. In diesem Fall denke ich, dass deine Erklärung nicht länger steht. – Andrei
@Andrei Ich habe Parameter/Argumente nicht erwähnt. Sie spielen keine Rolle bei der Barrierefreiheitsprüfung. –
Nicht in der Zugänglichkeitsprüfung, nein. Wenn Sie jedoch eine Klasse mit nur einem geschützten Konstruktor WITH params haben, müssen Sie ihren Konstruktor explizit mit params vom Kind aufrufen. Ich habe gesagt, dass diese Regel für anonyme Klassen übersprungen wird. – Andrei