Java :Poseur de lecture et de constructeur
Je suis un peu confus au sujet de l'utilisation des accesseurs/mutateurs et les constructeurs (voir le code ci-dessous pour un exemple)
public class ExampleClass {
private int value = 0;
public ExampleClass () {
value = 0;
}
public ExampleClass (int i) {
this.value = i;
}
public int getValue() {
return value;
}
public void setValue(int val) {
this.value = val;
}
public static void main(String[] args) {
ExampleClass example = new ExampleClass (20);
example.setValue(20);
//Both lines above do same thing - why use constructor?
System.out.println(example.getvalue());
}
}
Tout ce que j'ai appris, c'est que nous besoin de getters/setters pour la sécurité et qu'ils peuvent également être utilisés pour changer ou de modifier des valeurs plus tard.
Ma question est que si le constructeur est le point d'initialisation et d'un constructeur par défaut est toujours présent, pourquoi utiliser un constructeur avec paramètres pour initialiser les valeurs au lieu de les getters/setters?. N'utilisez pas les getter et setter assurer la sécurité ainsi être en mesure de facilement changer les valeurs à n'importe quel stade. Merci de bien préciser ce point pour moi.
si vous utilisez des poseurs, ils sont actuellement les méthodes, donc si vous avez plus d'un setters alors il est préférable d'utiliser le constructeur. Si vous appelez d'une définition pour plus d'une variable sera plus lente qu'en passant à la fois dans un seul constructeur et définissant à la fois dans une seule méthode. Dans ce cas, le constructeur est plus rapide que de multiples organismes de réglementation, de toute évidence, ils tous les deux ont de multiples avantages, la décision est la vôtre.
OriginalL'auteur Java Student | 2013-07-30
Vous devez vous connecter pour publier un commentaire.
Bien fait ce n'est pas toujours là. Un constructeur par défaut est celui qui est fourni par le compilateur (bien sûr, il s'agit d'un non-arg constructeur ) Seulement si il n'existe aucun autre constructeur défini dans la classe
Parce qu'il pourrait être une condition pour qu'un objet peut toujours être créé uniquement lorsque toutes les valeurs sont fournies au moment de l'initialisation de lui-même et il n'y a pas de valeur par défaut. Donc toutes les valeurs doivent être fournies sinon le code ne compilera pas.
Considérer cette
Book
classeEnvisager une situation où un livre ne peut être créée que si elle a
title
etauthor
.new Book()
parce que no-arg constructeur est absent et le compilateur ne fournira pas un parce qu'un constructeur est déjà défini.new Book()
parce que notre condition de ne pas répondre, comme à chaque livre a besoin d'un titre et de l'auteur.C'est la condition où le constructeur paramétré est utile.
OriginalL'auteur Prasad Kharkar
Parfois, lors de la création d'un nouvel objet de la classe, certaines valeurs doivent être fournies. Pour un exemple, lors de la connexion à la base de données et la création de la classe de Connexion de l'objet, vous devez fournir une chaîne de connexion, de sorte qu'il sait de quoi vous vous connectez. La création de nouvelles connexions sans specyfing base de données cible serait assez inutile, non?
Aussi, jetez un oeil à ce
et ce
D'abord on regarde mieux, pas vrai?
OriginalL'auteur Zibi
Si vous pensez à un objet de transition entre les différents états, alors il est logique d'avoir un constructeur paramétré alongwith les setters et getters. Permettez-moi d'essayer de mettre un scénario de la vie réelle: Pensez à un Employé de la classe, un nouvel employé est embauché, vous ne savez pas beaucoup de détails, mais quelques-uns et vous créez l'objet de l'Employé avec defualt et de la base de la valeur de ses attributs. Vous devez vous inscrire à l'employé dans le système et donc vous avez utilisé le constructeur paramétré. Une fois que vous obtenez plus de détails au sujet de l'employé, vous devez utiliser les accesseurs et mutateurs pour mettre à jour les attributs.
OriginalL'auteur Juned Ahsan
c'est purement jusqu'à votre style de codage. Mais IMO, je voudrais utiliser paramétrées constructeur:
pour initialiser les valeurs qui ne doivent pas être modifiés. (comme le paramètre de nom d'utilisateur pour un objet personne)
pour initialiser ces valeurs, sans paramètre, l'objet sera en état non valide.
Dire, vous envoyez les paramètres de connexion à une méthode. Vous pouvez utiliser ces moyens
alors que vous pouvez envoyer de l'objet de Connexion juste après la définition du nom d'utilisateur dans le 1er cas, il serait non valide à la réception de fin. mais la deuxième méthode est moins sujette aux bugs, bcz, il devient nécessaire de passer tous les paramètres requis.
OriginalL'auteur Ankit
Parfois, vous n'avez pas besoin de tous les champs à valeurs spécifiques au moment de la création. Par exemple, lorsque vous faites un tableau. Aussi, comme déjà dit, c'est plus de sécurité lorsque vous utilisez les méthodes de lecture -- vous ne pouvez pas obtenir nullpointer.
N'oubliez pas d'écrire le constructeur par défaut lorsque vous avez défini un constructeur avec paramètres. Ou assurez-vous de ne pas l'utiliser.
OriginalL'auteur ba3a
Tout d'abord, les deux méthodes: Constructeur et de définition sont des moyens sûrs pour modifier les attributs de l'objet. Sont attendus à partir de la Classe de l'auteur pour exposer ou pas de moyens sûrs pour modifier une instance.
Le constructeur par défaut est toujours disponible si vous n'avez pas écrit:
2. À propos de ce qui est mieux: à l'Aide d'un constructeur ou via setter, cela dépend de ce que tu veux. Si vous ne modifiez un attribut d'un objet existant, u peut utiliser le setter, ou d'un objet rempli vous préférez peut-être le constructeur de la place.
OriginalL'auteur César Barbosa
Juste pour rendre les choses plus facile. Il prend moins de code à utiliser un constructeur que de créer un objet et utiliser les setters.
OriginalL'auteur tbodt
Il est plus facile et plus sûr pour initialiser vos variables d'objet par l'intermédiaire de votre constructeur pour éviter nullpointers.
Si vous instanciez votre objet sans l'initialiser vos variables d'abord et vous faire une opération sur l'un de vos variables nulles, vous pourriez obtenir un nullpointer exception à l'exécution parce que vous avez oublié de définir manuellement sa valeur.
Sur le revers de la médaille, si vous avez toujours initialiser vos variables d'objet dans votre constructeur par défaut, vous avez un sérieux risque réduit d'obtenir nullpointer exceptions lors de l'exécution, car aucun de vos variables peuvent être null sauf si vous définissez spécifiquement par le biais d'un setter (qui n'est pas recommandé).
OriginalL'auteur JREN
Constructeur avec arguments vous fait obtenir l'objet entièrement construite. Si vous souhaitez utiliser par défaut, vous devrez assurez-vous que les champs sont définis à l'aide d'organes de régulation. Au cours de la série de certains biens, supposons que l'exception est levée, maintenant vous avez un objet qui n'est pas utilisable. Dans plusieurs cas, le poseur de ne pas être exposées, mais les méthodes de lecture. Dans ces cas, le constructeur avec arguments ou un nom de constructeur est la bonne option. En un mot, les getters et les setters ont leur propre importance, plutôt que de l'initialisation de l'objet.
Pourquoi utiliser les accesseurs et mutateurs?
OriginalL'auteur Karthikeyan
Parce que vous écrivez à l'aide de moins, plus élégant et mieux lisible le code lorsque vous définissez les valeurs des paramètres dans un constructeur. En outre, parfois, certains champs sont indispensables pour l'objet, pour un constructeur de paramètre empêche l'utilisateur de créer un objet en omettant les champs nécessaires pour la fonctionnalité de l'objet. On est pas si "oblidged" pour appeler les organismes de normalisation.
OriginalL'auteur arjacsoh