Java setters et getters
J'ai été aux prises avec les setters et getters en java pour un temps assez long maintenant.
Par exemple, si je veux écrire une classe avec quelques informations comme le nom, le sexe, l'âge, etc avec l'ensemble approprié et obtenir les méthodes. Puis, dans une autre classe que je veux tester mon jeu et getters avec cela comme un exemple:
personInfo = myInfo() = new Personinfo("Anna", "female", "17");
Comment dois-je faire?
Je sais que je peux avoir une impression comme:
public void printout() {
System.out.printf("Your name is: " + getName() +
" and you are a " + getSex());
}
N'est pas Générateur de modèle de conception utile?
double possible de Getters et setters en Java
Pouvez-vous montrer le code pour PersonInfo?
C'est une double question. Cependant, pour tester les méthodes de lecture/paramètres que vous ne voulez probablement pas à imprimer des choses. Lire sur les tests unitaires.
double possible de Getters et setters en Java
Pouvez-vous montrer le code pour PersonInfo?
C'est une double question. Cependant, pour tester les méthodes de lecture/paramètres que vous ne voulez probablement pas à imprimer des choses. Lire sur les tests unitaires.
OriginalL'auteur |
Vous devez vous connecter pour publier un commentaire.
C'est un exemple simple pour vous montrer comment le faire:
Cela permettra d'imprimer:
Mon nom est:MyName
Mon nom est:OtherName
Le constructeur par défaut est un constructeur qui est automatiquement généré par le compilateur, sauf si vous définissez un autre constructeur. Dans ce cas, le constructeur par défaut ne sera pas généré, parce que j'ai défini explicitement un constructeur avec 3 arguments.
Quelle est la différence de retour avec le mot-clé this, ou puis-je simplement revenir juste pour l'exemple? Au lieu de retourner le présent.âge; juste retour de l'âge;
Dans ce cas, il ne fonctionne que par le rendement de l'âge, mais si une variable est définie dans la méthode avec le même nom que la variable d'instance, alors nous devons faire une différence entre les deux en utilisant le mot-clé this.
OriginalL'auteur
Laisser eclipse gestionnaire pour vous
Cliquez sur votre variable
Source > Générer Setter /Getter
Oui j'ai besoin d'apprendre à partir de zéro avant de commencer à générer du code, mais merci pour l'astuce. Je vais garder cela à l'esprit.
Pour le lire, reportez-vous 'la Tête la première, java' Chapitre 4, rubrique Getter et Setter
OriginalL'auteur Maulzey
Vous avez besoin pour créer un objet d'une classe dans l'autre classe. Vous pouvez ensuite appeler le
.get()
et.set()
méthodes. Je vais poster un exemple en 2 minutesDe première classe (je vais l'appeler Personne) ont des méthodes pour retourner à ses champs
La deuxième classe d'appeler ces méthodes après la création d'un objet de la classe de première
vous devrez déclarer le nom et l'âge en tant que privé, sinon je ne vois pas l'utilité de se limiter à getter, les setters
Vous devez déclarer le getName et getAge modificateurs d'accès. Je pense protégé est la valeur par défaut. le public est probablement ce qui est souhaité.
pas de réel besoin, mais je n'ai de toute façon pour une bonne pratique, je suppose. les accesseurs et mutateurs sont généralement de perte de temps pour un programme aussi simple que cela, le point est de montrer comment ils sont utilisés
Merci beaucoup! C'est beaucoup plus clair pour moi maintenant.
OriginalL'auteur Stephan
Le point de getters et setters est de vous permettre de limiter et d'élargir le champ d'application ou la fonctionnalité de votre propriété, indépendants les uns des autres.
Vous pourriez voulez que votre 'nom' propriété en lecture seule à l'extérieur de votre PersonInfo classe. Dans ce cas, vous avez un getter, mais pas de setter. Vous pouvez passer de la valeur pour les propriétés en lecture seule par le constructeur, et de récupérer cette valeur par un getter:
Nous pouvons utiliser getName() pour obtenir la valeur de " nom " en dehors de cette instance de classe, mais depuis que le nom de la propriété est privée, on ne peut pas accéder et de le définir à partir de l'extérieur. Et parce qu'il n'y a pas de setter, il n'y a aucun moyen que nous pouvons changer cette valeur, rendant la lecture seule.
Comme autre exemple, nous voulons faire quelque logique de validation avant de modifier les valeurs internes. Cela peut être fait dans le setter, et une autre façon que les accesseurs et mutateurs peut venir dans maniable:
Maintenant nous ne pouvons définir la valeur de "nom", si la longueur de la valeur que nous voulons ensemble est plus grand que 10. C'est juste un exemple très simple, vous souhaiterez probablement de la gestion d'erreurs, au cas où quelqu'un va brouillage des valeurs non valides dans votre méthode, et se plaint quand il ne fonctionne pas.
Vous pouvez suivre la même procédure pour toutes les valeurs que vous voulez, et de les ajouter à l'constructeur de sorte que vous pouvez les définir d'abord. Que pour, en fait, à l'aide de ce modèle, vous pouvez faire quelque chose comme de la voir en action:
OriginalL'auteur
Vous créez un objet en instanciant le constructeur comme suit
Vous pouvez ensuite appeler des méthodes sur l'objet comme suit
ou
OriginalL'auteur Jon Taylor
voici comment vous le faites:
Ou vous pouvez ajouter ceci: les
et puis il suffit d'un
.toString
EDIT:
Ajouter ce constructeur dans la classe afin d'initialiser l'objet ainsi:
eh bien tout simplement ajouter un constructeur dans la classe ci-dessus,
C'est quelque chose que je ne comprends pas. Pourquoi, alors, avoir des setters et getters quand je dois initialiser avec un constructeur?
vous n'avez pas, puisque vous mettez en place l'exemple que vous voulez de cette façon donc, c'est une possibilité, mais vous ne le faites pas dans la pratique.
et parfois, vous avez quelques variables obligatoires qui doivent être définies, tandis que d'autres sont facultatifs, de sorte que vous pouvez combiner de telle manière que mettre ceux obligatoires dans le constructeur, tout option (parfois avec la valeur par défaut) comme les setters
OriginalL'auteur
Dans personInfo:
Puis de résoudre l'instruction print:
OriginalL'auteur Marco Corona