Wenn Konstrukteure die Vererbung planen, können sie eine überschreibbare Methode aufrufen?

9

Ab Effective Java 2nd edition, Punkt 17:

  

Für jede öffentliche oder geschützte Methode oder jeden Konstruktor die Dokumentation   muss angeben, welche überschreibbaren Methoden die Methode oder den Konstruktor haben   ruft

auf

Später im selben Artikel heißt es:

  

Konstruktoren dürfen keine überschreibbaren Methoden direkt oder indirekt aufrufen.

Sind diese beiden Aussagen nicht widersprüchlich, oder fehle ich etwas?

    
traveh 06.04.2016, 13:47
quelle

1 Antwort

1

Das Aufrufen von überschreibbaren Methoden während der Konstruktion ist erlaubt - daran ist nichts illegal.

Das Aufrufen von überschreibbaren Methoden während der Konstruktion ist NICHT ratsam - Es ist im Allgemeinen nicht ratsam, übersteuerbare Methoden während der Konstruktion aufzurufen, da dies zu unvollständigen Objekten führen kann und die Vorhersehbarkeit des Systems einschränkt. p> %Vor%

Beachten Sie, dass sich Ihr erstes Zitat nur auf die Dokumentation und nicht auf den Code bezieht. Ich würde vorschlagen, dass das einzige Problem die Verwendung von muss ist, wenn sollte wäre wahrscheinlich angemessener.

    
OldCurmudgeon 06.04.2016 13:57
quelle

Tags und Links

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '317090',
    'url' => 'when-planning-for-inheritance-are-constructers-allowed-to-call-overridable-meth',
];

$_SESSION = [
    '__flash' => [],
];