Pourquoi les constructeurs ne peuvent-ils pas être finaux, statiques ou abstraits en Java ?
Par exemple, pouvez-vous m'expliquer pourquoi ceci n'est pas valable ?
public class K {
abstract public K() {
// ...
}
}
Pourquoi les constructeurs ne peuvent-ils pas être finaux, statiques ou abstraits en Java ?
Par exemple, pouvez-vous m'expliquer pourquoi ceci n'est pas valable ?
public class K {
abstract public K() {
// ...
}
}
Malheureusement, en PHP, le compilateur ne soulève pas de problème pour les deux types d'utilisateurs abstract
y final
constructeur.
<?php
abstract class AbstractClass
{
public abstract function __construct();
}
class NormalClass
{
public final function __construct() {
echo "Final constructor in a normal class!";
}
}
En PHP static
n'est pas autorisé et soulèvera fatal
exception.
Ici, dans AbstractClass
évidemment, un constructeur peut être déclaré comme abstrait plus non implémenté ou il peut être déclaré comme quelque chose parmi ( final
, public
, private
, protected
) plus un corps de fonction .
Quelques autres informations sur le PHP :
__construct()
n'est pas possible.__construct()
peut être déclaré comme abstract
, final
, public
, private
y protected
!Ce code a été testé et est resté vrai dans les versions de PHP de 5.6 à 7.4 !
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Considérer ce que chacun de ces mots-clés fait pour les autres méthodes. Parfois, cela n'a aucun sens dans le contexte d'un constructeur, d'autres fois, c'est déjà implicite.
4 votes
Pourquoi voulez-vous un constructeur statique ? Cette question semble être un problème de devoir.