Ce n'est un constructeur de retour en Java?
Après le post sur ce sujet, j'ai trouvé moi-même peu confus.
Encore une fois, je me demande ceci:
"Java constructeur retourne aucune valeur?"
Mes livres disent qu'ils ne peuvent pas retourner une valeur, mais mon professeur dit qu'ils peuvent et qu'ils sont toujours le faire.
Que le contrôle doit être transféré à quelqu'un avec une certaine valeur soit nulle?
- Peut-être que votre professeur-dire qu'il leur renvoyer une nouvelle instance ?
- Peut-être cela aide: docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.5
- "Comme le contrôle doit être transféré à quelqu'un avec une certaine valeur soit nulle?" est vide de sens. Votre professeur est faux. Si vous voulez savoir ce qu'il signifie, vous l'aurez qu'à lui demander.
Vous devez vous connecter pour publier un commentaire.
C'est un peu déroutant: constructeurs, en effet, ne retournent pas de valeur; elle est opérateur de
new
qui ne. Toutefois, les constructeurs sont toujours utilisés avec unnew
*, de sorte qu'il ressemble ils toujours renvoyer une valeur.* C'est une légère simplification: vous pouvez utiliser un constructeur sans
new
si vous passez par réflexion. Cependant, les mêmes mécanismes seront en jeu.new
mot-clé renvoie une valeur: j'ai dit que lenew
operator n'. Mots-clés et les caractères spéciaux sont les éléments de la syntaxe; ils ne font rien. C'est les opérateurs qu'ils représentent que faire. Mot-clénew
par lui-même est aussi dénué de sens comme un+
ou-
gauche par eux-mêmes. Ils ont besoin d'opérandes. Tout comme unaire moins prend un opérande qui doit être un nombre, un opérateurnew
prend un opérande qui doit être un constructeur. Opérateurnew
prend soin de l'allocation de la mémoire, d'appeler le constructeur, en lui passant les paramètres requis, et le retour de la valeur pour vous.Un constructeur retourne une nouvelle instance de la classe à laquelle il appartient, même si elle n'est pas expressément l'instruction return.
this
'. Il est utilisé pour alimentation le valeur de l'objet courant. Il n'y a pas de "retour" à propos d'elle.Je pense que la confusion est purement de notation. Lorsque vous déclarez un constructeur, vous le faites comme suit:
Ici, il n'y a pas de valeur de retour explicite.
Toutefois, lorsque vous instanciez un objet, la syntaxe est comme suit:
Cela crée un nouvel objet par l'allocation de mémoire et d'appeler le constructeur. Ici, le résultat est clairement une instance de
Foo
.Un moyen de concilier apparemment contradictoires de la notation est par la pensée d'un constructeur comme le retour de l'objet en cours de construction, mais de le faire de façon implicite.
Les constructeurs sont des MÉTHODES SPÉCIALES.
Bien la différence Fondamentale dans les Constructeurs et les Méthodes est que
Constructeur
alors que
Méthodes
Syntaxe Pour Les Méthodes:
AccessModifier ReturnType Classe(...)
Par exemple: public static void main(String []args)
Syntaxe Pour Les Constructeurs:
AccessModifier Pas ReturnType Classe(...)
Par exemple: public static main(String []args)
Veuillez Noter:
Java est un langage fortement typé, de sorte que chaque fonction a son type de retour, et le constructeur renvoie toujours une instance de la classe.
Je suis d'accord avec les deux ci-dessus l'explication , et souhaitez ajouter des instructions pour faire plus clair:
Question : qu'est Ce qu'un constructeur :
Réponses: c'est une méthode ayant le nom même de la Classe.
Question: est-constructeur renvoie quelque chose ?
Réponse: non , même pas VOID.
Question : Comment faire pour appeler un constructeur ? OU comment un constructeur est appelé ?
Réponses : Par la création d'un Objet à l'aide du mot clé NEW.
Question: comment faire pour créer un objet ?
Réponse: Une façon de créer l'objet est l'aide de l'opérateur NEW , qui renvoie une instance de l'objet.
this
'. Il est utilisé pour alimentation le valeur de l'objet courant. Il n'y a pas de "retour" à propos d'elle.Par définition, il n'est pas possible de retourner une valeur à partir d'un constructeur.Un constructeur ne prend pas en charge tout type de retour
donc, à présent, je suis préoccupation constructeur de retourner l'id de référence de variable de référence de la catégorie. prenons un exemple:
de sortie: demo@7d4991ad
c'est la référence id de l'objet " d " de la classe démo qui est retourné par le constructeur. si u ne sera pas définir votre constructeur puis jvm va obtenir ce code d'identification du constructeur par défaut.
vous pouvez vérifier par cette ligne:
Système.out.println(nouvelle démo());
sortie: demo@1b6d3586.
étant donné que chaque objet a son propre tas de zone dans la mémoire de référence tant d'identité de chaque objet varient également.
Imaginez-vous dans une situation où vous vous êtes dit l'esquisse d'un Aigle.
Premier Scénario: on ne Vous dit pas comment doit-elle regarder. Tout ce que vous savez est de faire une simple esquisse d'un Aigle
Deuxième Scénario: on Vous dit exactement ce que les couleurs à utiliser et la posture dans laquelle l'Aigle est d'être esquissé
Maintenant le Premier scénario décrit exactement ce qu'un constructeur par défaut et le Deuxième scénario, c'est quand vous avez de l'information quant à la manière dont l'objet doit être créé. Mais jusqu'à ce que et à moins que vous prenez un crayon et du papier et de commencer à dessiner, vous ne seront pas retournés quoi que ce soit.
Ainsi, lorsque vous appelez le constructeur à l'aide d'un nouveau mot-clé, vous obtenez un objet. Si elle ne fait pas explicitement le retour de quelque chose, mais au lieu de cela, il crée ou des constructions de quelque chose que vous pouvez utiliser comme une instance d'une classe.
oui, c'est la classe en cours d'instance. (Nous ne pouvons pas utiliser le type de retour mais elle renvoie une valeur).
this
, mais ne pas retourner une valeur.Constructeur renvoie la structure détaillée de la classe à de très bas niveau (comme la quantité d'espace mémoire est utilisée par des données et méthodes) + exécute le code écrit dans le constructeur.
Tandis que la nouvelle l'opérateur prend, le retour du constructeur, comme son opérande et d'allouer de la mémoire au moment de l'exécution et retourne son gestionnaire de variable de classe.
implicitement constructeur de retourner le type de classe........