[JAVA] Pourquoi vous avez besoin de setter / getter en premier lieu

Vous utilisez setter / getter, non? ..

Pourquoi avez-vous besoin de setter / getter? ・ Qu'est-ce que setter / getter? ・ N'aime pas le setter / getter · Pourquoi tu en as besoin ・ Pourquoi ça existe Je vais expliquer dans l'ordre de.

Qu'est-ce qu'un Setter / Getter

Qu'est-ce qu'un setter / getter?

.....

Celui à régler </ b>

Obtenez-le </ b>

Ce niveau de compréhension est correct w

Exemple: définir / obtenir la date d'hier, d'aujourd'hui et de demain et la sortie



Date date = new Date();

private Date yesterdayDate; //Date d'hier
private Date currentDate;   //La date d'aujourd'hui
private Date tomorrowDate;  //La date de demain

//setter: date du jour
public void setCurrentDate(Date currentDay) {
    this.currentDay = currentDay;
}

//getter: date du jour
public Date getCurrentDate() {
    return currentDay;
}

//Omis ci-dessous...
//setter: date d'hier
//getter: date d'hier
//setter: date de demain
//getter: date de demain

public static void main(String[] args) throws Exception {
        //Défini aujourd'hui
        calendar.setTime(date);
        setCurrentDate(calendar.getTime());

        //Définir hier
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        setYesterdayDate(calendar.getTime());

        //Définir demain
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        setTomorrowDate(calendar.getTime());
        
        //Montrer hier
        System.out.println("Date d'hier:" + getYesterdayDate());
        //Afficher aujourd'hui
        System.out.println("La date d'aujourd'hui:" + getCurrentDate());
        //Montrer demain
        System.out.println("Date de demain:" + getTomorrowDate());
}

Comme ça.

C'est setXXXXX, getXXXXX.

Dans l'exemple, la méthode est également privée car elle est appelée en définissant la variable dans la classe, mais il n'y a pas de problème.

Définir les variables en privé </ b> et setter et getter sont créés en public </ b>.

Partie dégoûtante du setter / getter

1. Cela seul ajoute du code </ b> setter: 3 lignes getter: 3 lignes

Oui, ce n'est que 6 lignes. 6 lignes même si je ne veux pas gâcher si possible ...

2. Gestion des problèmes </ b> Pour la même raison que 1, plus le code est long, plus il est lourd à gérer. Seulement set et get, mais deux méthodes seront ajoutées. C'est tout.

3. Le mouvement se fait en interne </ b>

setCurrentDate(calendar.getTime());

Cette méthode elle-même ne fixe pas la date d'aujourd'hui. Dans la méthode

this.currentDay = currentDay;

C'est faire.

getter

return currentDay;

Vous pouvez l'obtenir pour renvoyer la date.


En d'autres termes, la date du jour elle-même

Passer les variables avec = </ b> Renvoie une variable avec retour </ b>

C'est une traduction installée. Puis. ..

Pourquoi tu en as besoin

Passer les variables avec = </ b> Renvoie une variable avec retour </ b>

Si vous le faites dedans, vous ne devriez pas avoir besoin d'un setter / getter. Toutes les dates

//set
this.currentDay = currentDay;
//get
currentDay;

Cela devrait être bien. .. Alors pourquoi en avez-vous besoin?

1. Pour protéger les variables </ b>

C'est public </ b> qui crée et définit / récupère les variables dans private </ b>. Donc, à part cela, vous ne pouvez pas définir / obtenir </ b>.

・ Interdire le réglage avec = ci-dessus et régler uniquement avec le setter ・ Interdisez l'acquisition directe et obtenez uniquement avec getter Cela limite le réglage / l'obtention de la valeur de la variable.

2. Pour clarifier où vous définissez / obtenez </ b>

Pour la même raison que 1. En utilisant setter / getter, l'endroit où vous définissez / obtenez devient clair. De plus, s'il tombe à l'endroit où vous vous trouvez, il devient clair que vous ne l'avez pas réglé avant cela.

Cependant, la théorie inutile du setter / getter peut ou non être régulièrement excitée.

Puis. ..

Pourquoi ça existe

setXXX getXXX

Sans regarder la structure interne Cela seul sait ce que vous faites </ b>.

setCurrentDate // Définir la date du jour getYesterdayDate // Récupère la date d'hier setOneMonthAgo // Définit la date il y a un mois getOneYearDate // Obtenez la date un an plus tard

Comme ça.

Résumé

Je l'ai écrit jusqu'à présent, mais Je pense personnellement que certaines parties existent par convention </ b>.

Quoi qu'il en soit, je déteste vraiment l'augmentation du code. ..

Mais! Quelque chose comme kotlin inclut setter / getter.

val currentDate :Date; //La date d'aujourd'hui

Oui. C'est la fin w

Disons qu'il a setter / getter comme structure interne de var. .. Au fait, seul le getter est fait au moment de val.

Récemment, je n'ai pas à me soucier d'écrire setter / getter. Merci ~ Merci!

référence

https://qiita.com/katolisa/items/6cfd1a2a87058678d646

http://d.hatena.ne.jp/Nagise/20141010/1412930502

https://qiita.com/SYABU555/items/7cc5909c119ec9ab0288