Après avoir lu le post sur ce sujet, je me suis trouvé un peu confus . Je pose donc à nouveau la question suivante:
"Le constructeur Java renvoie-t-il une valeur?"
Mes livres disent qu'ils ne peuvent pas restituer une valeur, mais mon professeur dit qu'ils peuvent le faire et qu'ils le font toujours.
Comme le contrôle doit être transféré à une personne ayant une valeur, elle est nulle ou non?
C'est un peu déroutant: les constructeurs ne renvoient en effet pas de valeur; c'est l'opérateur new
qui le fait. Cependant, les constructeurs sont toujours utilisés avec un new
*, donc on dirait qu'ils toujours retournent une valeur .
new
si vous passez par réflexion . Cependant, les mêmes mécanismes seront en jeu.Un constructeur retourne une nouvelle instance de la classe à laquelle il appartient, même s'il n'a pas d'instruction de retour explicite.
Je pense que la confusion est purement de notation. Lorsque vous déclarez un constructeur, vous le faites comme suit:
public class Foo {
public Foo() {}
}
Ici, il n'y a pas de valeur de retour explicite.
Cependant, lorsque vous instanciez un objet, la syntaxe est la suivante:
Foo foo = new Foo();
Cela crée un nouvel objet en allouant de la mémoire et en appelant le constructeur. Ici, le résultat est clairement une instance de Foo
.
Une façon de réconcilier la notation apparemment conflictuelle consiste à penser qu'un constructeur renvoie l'objet en cours de construction, mais de manière implicite.
Les constructeurs sont des méthodes spéciales ... La différence de base entre constructeurs et méthodes est que
Constructeur
tandis que
Méthodes
Syntaxe pour les méthodes:
AccessModifier ReturnType Class (...)
EG: public static void main (String [] args)
Syntaxe pour les constructeurs:
AccessModifier No ReturnType Class (...)
EG: public static main (String [] args)
Notez s'il vous plaît:
Java est un langage fortement typé, chaque fonction a donc son type de retour et le constructeur renvoie toujours une instance de la classe.
Je suis d'accord avec l'explication ci-dessus deux, et veux ajouter quelques déclarations pour être plus clair:
Question: Qu'est-ce qu'un constructeur: Réponses: C'est une méthode portant le même nom que Class.
Question: Le constructeur retourne-t-il quelque chose? Réponse: Non, même pas VOID.
Question: Comment appeler un constructeur? OR comment un constructeur est-il appelé? Réponse: En créant un objet avec le mot-clé NEW.
Question: comment créer un objet? Réponse: Une des façons de créer un objet consiste à utiliser l'opérateur NEW, qui renvoie une instance d'objet.
Par définition, il n’est pas possible de retourner une valeur à partir d’un constructeur. Un constructeur ne supporte aucun type de retour.
donc, jusqu'ici, je suis le constructeur concerné retourne l'id de référence à la variable de référence de cette classe. Prenons un exemple:
class demo
{
demo{}
}
class demo1
{
public static void main(String as[])
{
demo d = new demo();
System.out.println(d);
}
}
output: demo@7d4991adit est l'ID de référence de l'objet 'd' de la classe demo qui est renvoyé par le constructeur. si vous ne définissez pas votre constructeur, jvm obtiendra cet identifiant du constructeur par défaut.
vous pouvez le vérifier par la ligne suivante: System.out.println (new demo ()); chaque objet varie également.