Méthodes Avec le Même Nom en tant que Constructeur - Pourquoi?
Pourquoi l'autorisées suivantes:
public class Foo {
public Foo() { ... }
public void Foo() { ... }
}
Est-il jamais une raison valable pour nommer une méthode le même que celui de la classe?
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est que c'est autorisé car interdisant explicitement ce serait ajouter un autre exigence de Java identification de règles de nommage pour très peu d'avantages. Contrairement, disons, C++, Java nécessite toujours que les constructeurs sont appelés avec la
new
mot-clé, afin d'éviter toute ambiguïté quant à savoir si un identificateur fait référence à une méthode ou d'un constructeur. Je suis d'accord qu'une méthode avec le même nom que sa classe parente est assez déroutant au premier coup d'œil, et il devrait être presque certainement être évité. Cela dit, je suis content qu'ils ont choisi de ne pas compliquer davantage la langue par l'interdiction de telles méthodes.C'est odieux. Je ne voudrais pas laisser de telles choses pour survivre à une révision du code.
La seule raison valable que je peux penser pour l'utilisation de ce est si la classe parent ajoute des méthodes après avoir écrit l'enfant de la classe:
Si vous n'avez aucun contrôle de la
Father
interface, mais ne le contrôle de laSon
classe, alors vous devez changerSon
en quelque sorte. Vous pourriezSon
classeFather
classeSon
méthodeSi le
Son
classe est une dépendance de nombreux autres projets, puis le #1 et #2 peut être inacceptable, ce qui vous laisse pas le choix, mais pour ajouter de laSon( )
méthode.C'est là un exemple artificiel. Vous ne devriez jamais voir une telle chose dans le code réel.
Le constructeur a le même nom que la classe et tombe sous le Type d'espace de noms. La méthode de l'espace de noms est distinct de l'espace de noms du Type en Java. C'est donc techniquement autorisé (et ce n'est pas la surcharge).
Cependant, il n'est pas une raison valable pour en fait le nom d'une méthode le même que le nom de la classe. Il sera considéré comme une très mauvaise pratique.
Je ne vois pas une raison valable à cela.
C# fournit une erreur de compilateur - "les Noms des Membres Ne peut pas Être Le Même Que Leur Joignant Type"
Il pourrait être assez déroutant, surtout lors de l'utilisation de la réflexion pour regarder la composition d'un objet.
La méthode de la valeur de retour est définie comme nulle, alors que le constructeur n'a pas de valeur de retour, ce qui les rend différents, et donc le code est valide. Pourquoi quelqu'un voudrait le faire, cependant, est au delà de moi.
la raison en est que les constructeurs nous transmettre les valeurs au moment de la création d'un objet de la classe.donc c'est pourquoi le nom du constructeur doit être la même, de sorte qu'il peut prendre les valeurs passées et initialisé au moment de la création d'un objet de la classe.