C'est pourquoi j'ai écrit cet article. Si vous voulez juste savoir comment écrire, cet élément est recommandé via.
Actuellement en train d'apprendre le langage Java, la programmation elle-même est un débutant. Tout d'abord, faites quelque chose qui fonctionne! Dans cet esprit, toutes les variables sont décrites en public et l'orientation objet est reportée. Cette fois, j'ai décidé de coder avec une programmation orientée objet, mais j'étais accro à l'erreur dans les parties setter et getter, et j'ai passé une semaine à la résoudre.
Même si je cherche avec setter et getter, tout ce qui ressort, c'est l'histoire du groupe qui n'en a pas besoin, et il n'y a rien qui explique mon erreur de grammaire ou de fonction, donc j'étais très inquiet, alors j'ai écrit un article comme celui-ci Je suis. Les détails de l'erreur seront décrits plus loin.
Langage Java-12.0.1 Écrit dans un éditeur de texte
Tout d'abord, comment écrire setter et getter.
SetGet.java
//Classe de déclaration de variable
class SetGet{
//Déclaration de variable en privé
nom de variable de type privé;
// getter
nom de variable de type public{
return this.Nom de variable;
}
// setter
nom de variable public void(Type Nom de variable approprié){
this.Nom de variable=Nom de variable approprié;
}
}
Ensuite, comment écrire dans la classe d'exécution
SetgetRunner.java
//Classe d'exécution
class SetGetRunner{
public static void main(String[] args){
//Création de variables et d'instances de référence de classe
//Dans ce cas, nom de classe = SetGet
Variable de référence de nom de classe=nouveau nom de classe();
//Attribuer une valeur à une variable déclarée privée dans la classe SetGet
Variable de référence.définir le nom de la variable(Valeur que vous souhaitez attribuer);
//Obtenez de la valeur
Saisissez le nom de la variable 2=Variable de référence.obtenir le nom de la variable();
}
}
Si vous l'expliquez en japonais, cela ressemblera à ce qui précède. Cependant, c'est très difficile à comprendre, alors écrivons-le.
Setget2.java
//Classes pour getter et setter
class SetGet2{
//Déclarer la variable de type int apple en privé
private int apple;
// getter
public int getApple(){
return this.apple;
}
// setter
public void setApple(int apple){
this.apple = apple;
}
}
//Classe d'exécution
class SetGet2Runner{
public static void main(String[] args){
//Création de variables de référence et d'instances pour les classes
SetGet2 setget2 = new SetGet2();
//Affecter à une variable déclarée privée
setget2.setApple(3);
//Obtenez de la valeur
int appleQuantity = setget2.getApple();
//production
System.out.println("Nombre de pommes:" + appleQuantiry + "Ko");
//Résultat de sortie
//Nombre de pommes: 3
}
}
Ce sera.
Ensuite, je vais expliquer la fonction. getter et setter "En orientation objet, les variables d'une instance représentent l'état interne, et il est basé sur l'idée qu'elle ne doit pas être directement référencée ou manipulée de l'extérieur. Assurez-vous de passer par la méthode correspondant à l'accès aux variables, etc. Cela présente l'avantage de pouvoir vérifier et traiter correctement au sein de la méthode et contrôler l'accès de l'extérieur afin qu'il n'y ait pas de panne. "
getter "Méthode de lecture / acquisition / référencement des valeurs des variables membres (attributs, propriétés) à l'intérieur d'un objet depuis l'extérieur" settter "Méthode d'écriture / d'exploitation / de définition de la valeur des variables membres (attributs, propriétés) à l'intérieur de l'objet depuis l'extérieur"
(Ce qui précède est extrait de IT Glossary e-words)
une. En termes simples, pourquoi l'idée de programmation orientée objet est utilisée. Cela signifie restreindre l'accès de l'extérieur pour éviter les erreurs et les erreurs.
getter est une méthode pour obtenir une valeur de l'extérieur, et setter est une méthode pour la manipuler de l'extérieur.
Comme vous pouvez le voir dans l'explication ci-dessus, il fonctionne en fait sans setter si vous ne le faites pas fonctionner de l'extérieur. Vous n'avez besoin de setter que pour opérer à partir d'une classe externe, donc vous n'en avez pas besoin si vous utilisez simplement des variables. Ce que vous faites dans la classe d'exécution est simplement d'appeler les méthodes getter et setter dans la classe de déclaration.
J'expliquerai spécifiquement comment chacun fonctionne en utilisant le fichier Setget2.java mentionné ci-dessus.
Setget2.java
Setget2 setget2 = new SetGet2();
En déclarant une variable de type référence et en créant une instance, vous pouvez gérer la classe Setget2. Pour les variables de type de référence et les instances, si vous voulez comprendre en Java, ce HP est très facile à comprendre, alors veuillez vous y référer.
Setget2.java
setGet2.setApple(3);
J'appelle la méthode setter de la classe SetGet2 en utilisant la variable de type de référence que je peux gérer plus tôt.
SetGet2.java
public void setApple(int apple){
this.apple = apple;
}
C'était écrit comme ça dans la méthode setter. En ajoutant la valeur numérique 3 à int apple, la valeur donnée à la variable apple de la classe SetGet2 est affectée. C'est ce que nous faisons en attribuant la valeur de la classe d'exécution.
Vient ensuite le mouvement du côté de l'acquisition de valeur.
Setget2.java
int appleQuantity = setget2.getApple();
Dans la classe d'exécution, la méthode getter de la classe SetGet2 est appelée et affectée à la variable appleQuantity.
SetGet2.java
public int getApple(){
return this.apple;
}
Il y a une valeur de retour ici. Vous avez utilisé la méthode pour renvoyer la pomme à laquelle la valeur a été affectée dans le setter plus tôt à la classe d'exécution. AppleQuantity est déclaré comme une boîte qui gère la valeur de retour, et il est enfin possible de gérer des variables d'une autre classe.
Au fait, la classe d'exécution déclare à nouveau une nouvelle variable et utilise une variable d'une autre classe, mais en en faisant une condition de l'expression, il est possible d'utiliser une variable d'une autre classe sans utiliser de variable.
Par exemple dans une autre classe
Mass.java
private int colum;
private int row;
Supposons que vous déclariez. Après avoir attribué la valeur avec le setter
MassRunner.java
ArrayList<Integer> data;
for(int i = 0; i < mass.getColum() * mass.getRow; i++){
this.data = new ArrayList<Integer>;
this.data.add(i);
}
Ce faisant, chaque valeur peut être utilisée sans la mettre dans une variable. Après tout, nous avons besoin d'une variable pour affecter le résultat de l'expression ...
Jusqu'à présent, je suis finalement arrivé au contenu d'erreur auquel j'étais accro pendant une semaine. Le code où l'erreur s'est produite est le suivant.
Game.java
class Card{
//Déclaration des variables
private int mark;
private int number;
// getter setter
public int getMark(){
return this.mark;
}
public void setMark(int mark){
this. mark = mark;
}
public int getNumber(){
return this.number;
}
public void setNumber(int number){
this.number = number;
}
}
class Deck{
Card card = new Card();
card.setMark(4);
card.setNumber(13);
//Déclaration d'un deck vide
ArrayList<Integer> deckCard = new ArrayList<Integer>();
//Créer un deck
public Create(){
for(int i = 1; i < card.getMark() * card.getNumber(); i++){
this.deckCard.add(i);
}
}
}
class Game{
public static void main(String[] args){
Deck deck = new Deck();
deck.Create();
}
}
Déclaration d'erreur
Erreur:Début de type illégal
card.setMark(4);
^
Erreur: <identifier>il n'y a pas
card.setMark(1);
^
Erreur:Début de type illégal
card.setNumber(13);
^
Erreur: <identifier>il n'y a pas
card.setNumber(13);
^
Comme vous pouvez le voir en le comparant à l'exemple de phrase, définissez Il n'y a pas de méthode principale dans la classe. J'ai pu obtenir la valeur dans une classe sans la méthode principale, mais il semble que je ne puisse pas manipuler la valeur sans la fonction principale.
Je ne savais pas que je ne pourrais définir la valeur que plus tard dans la fonction principale, et j'y ai été accro pendant une semaine car je ne regardais que la grammaire du setter et du getter. En comparant mon code avec le code de référence, c'était une erreur car la plage que je regardais était étroite.
Soyez prudent aussi. Je ne comprends pas pourquoi il ne peut être exécuté que par la méthode principale, alors j'attendrai que quelqu'un d'autre l'explique.
Je voudrais demander à des personnes bien informées si cela est nécessaire ou non en premier lieu.
Merci pour la lecture.
11 août 2014 Première édition de Kiyotaka Nakayama / Daigo Kunimoto, publiée par Impress Co., Ltd. [Introduction à Java 2nd Edition](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82] % 8F% E3% 81% 8B% E3% 82% 8BJava% E5% 85% A5% E9% 96% 80-% E7% AC% AC2% E7% 89% 88-% E3% 82% B9% E3% 83 % 83% E3% 82% AD% E3% 83% AA% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-% E4% B8% AD% E5% B1% B1-% E6% B8% 85% E5% 96% AC / dp / 484433638X) ISBN 9784-8443-3638-9
Consulté le 4 juillet 2019 Introduction facile à Java
Consulté le 4 juillet 2019 Introduction to Java Object Orientation
Consulté le 4 juillet 2019 IT Glossary e-word
Recommended Posts