Java pour les débutants, masquage des données

Post-scriptum: 2020/3/13 Puisque le commentaire soulignait que le contenu de cette fois était "masquage de données" plutôt que "encapsulation", il a été corrigé. Le titre est également passé de l'encapsulation au masquage des données.

introduction

Cet article est un mémorandum. Bien qu'il s'agisse d'un contenu de niveau de référence, le code à publier dans cet article est ~~ ** L'erreur ** est le centre. C'est dans le but de publier la partie qui s'est réellement trompée lors du codage et de la publier pour une réflexion personnelle. ~~ De plus, je n'aborderai pas la partie profonde ici, car je la passerai en revue plus tard tout en étudiant les questions d'examen Java Silver.

environnement

Langue: Java11, JDK13.0.2 Environnement d'exploitation: Windows 10

Restreindre l'accès aux membres

J'ai confirmé que l'instance créée par new a ses propres membres (champs et méthodes) hérités de la classe. Mais dans la dernière classe Cat

Cat myCat = new Cat; mycat.weight = -20;

Et, la valeur qui n'était pas attendue lorsque la classe Cat a été créée peut être stockée arbitrairement à partir de la méthode main. Autoriser l'accès au champ ** (cette fois double weight) ** défini dans la classe Cat directement depuis la méthode main peut causer des problèmes.

private Par conséquent, lorsque "Je veux avoir un membre (méthode de champ) qui ne peut pas être géré depuis l'extérieur du traitement de classe", le modificateur attaché au membre (méthode de champ) est ** private **.

Cette fois, je voudrais gérer la classe Cat en passant de la couleur de type String à la hauteur de type double.

re-défi classCat


class Cat
{
  private double weight;
  private double height;
  //classe

  public void setWeightHeight(double w,double h)
  {
    if(w > 0 && w <= 50){
    weight = w;
    System.out.println("Le poids de ce chat" + weight + "Je l'ai fait kg.");
    } else{
        System.out.println("Je ne pense pas avoir ce poids ...");
      }
   
    if(h > 0 && h <= 200){
    height = h;
    System.out.println("La hauteur de ce chat" + height + "Je l'ai fait cm.");
    } else{
    System.out.println("Je n'ai jamais entendu parler d'un chat de cette taille ...");
      }
  }

  double getWeight()
  {
    System.out.println("Mettez à jour le poids du chat.");
    return weight;
  }

  double getHeight()
  {
    System.out.println("Mettez à jour la hauteur du chat.");
    return height;
  }

  void introduce()
  {
    System.out.println("Le poids de ce chat" + weight + "C'est kg.");
    System.out.println("La hauteur de ce chat" + height + "cm.");
  }
}

Étant donné que la «hauteur de poids» de la classe Cat est désormais «privée», il n'y a pas lieu de s'inquiéter de la valeur altérée.

public Mais si vous ne pouvez vraiment pas changer la valeur, vous ne pouvez pas changer la valeur de la nouvelle instance myCat que vous voulez new. Mais dans la classe Cat

public void setWeightHeight(double w,double h)

Je veux que vous fassiez attention. Il s'agit d'une méthode définie dans la classe Cat, mais son modificateur est défini sur ** public **. Il s'agit d'un modificateur "autoriser l'accès depuis l'extérieur de la classe", pendant le traitement

weight = w; height = h;

Et ** accéder au champ défini sur ** private **. Parmi les méthodes, le fait que «private» soit accessible à partir des méthodes de la même classe est utilisé, et le stockage à la valeur définie sur «private» via ** le traitement dans la méthode est possible. Permis **.

public void setWeightHeight(double w,double h) A une instruction if à l'intérieur, qui peut empêcher l'attribution de valeurs qui ne remplissent pas les conditions. Désormais, vous n'avez plus à vous soucier de stocker des valeurs ridicules.

À la fin

À propos du processus que j'ai vu cette fois, "Utilisez une méthode pour stocker une valeur dans le champ" privé "." Citant le livre de référence Easy Java 7th Edition

Une fonction qui rassemble des données (champs) et des fonctions (méthodes) dans une classe et attache privée aux membres que vous souhaitez protéger afin qu'ils ne soient pas accessibles sans autorisation.

Est. Cette conception fonctionnelle ** ~~ encapsulation ~~ masquage des données ** Je l'appelle. C'est ** l'un des principes de base de la conception orientée objet **, et des classes sont créées à cet effet. J'aborderai à nouveau d'autres principes, mais ce sont tous des principes importants, je veux donc les saisir fermement.

référence

J'écris et compile des variables et des expressions par moi-même autant que possible, donc si je veux les citer complètement, je vais les décrire.

Easy Java 7ème édition Java SE11 Silver Problem Collection (communément appelé Kuromoto)

Recommended Posts

Java pour les débutants, masquage des données
Exécution de débogage Java [pour les débutants Java]
[Java] Instruction de base pour les débutants
Application Java pour les débutants: stream
[Pour les débutants] Résumé du constructeur java
Les débutants jouent à des jeux Janken en Java
Java pour les débutants, les expressions et les opérateurs 1
[Pour les débutants] Exécutez Selenium sur Java
Java pour les débutants, les expressions et les opérateurs 2
[Pour les débutants en Java] À propos de la gestion des exceptions
Classes et instances Java pour les débutants
Pour l'apprentissage JAVA (2018-03-16-01)
Apprenez de «Et alors», les bases de Java [pour les débutants]
IDE 2017 pour Java
Java pour instruction
Une collection de questions simples pour les débutants Java
[Introduction à Java] Bases de l'arithmétique Java (pour les débutants)
Utilisons Java New FileIO! (Introduction, pour les débutants)
[Java] pour instruction, while instruction
[Java] Package de gestion
[Java] pour instruction / étendu pour instruction
[Java] Type de données ①-Type de base
Contre-mesures pour OutOfMemoryError en java
PNL pour Java (NLP4J) (2)
(Mémo) Java pour instruction
PNL pour Java (NLP4J) (1)
[Java] Principaux types de données
Types de données de base Java
[Pour les débutants] Comprendre rapidement les bases de Java 8 lambda
[Pour les débutants] Comment utiliser Stream API après Java 8
Générer des données factices pour divers tests avec Faker (java)
[Pour les débutants] Exemple minimum pour afficher RecyclerView en Java
Introduction à Java pour les débutants Connaissance de base du langage Java ①
Liste des instructions Java fréquemment utilisées (pour les débutants et les débutants)
[Pour les débutants] ○○. △△ en Ruby (méthode ActiveRecord, méthode d'instance, acquisition de données)
[Pour les débutants] Explication des classes, des instances et des statiques en Java
[Apprentissage Java Bronze] Différence entre l'encapsulation, le masquage des données et le masquage des informations
Mémo d'apprentissage Java (type de données)
[Java] Compréhension débutante de Servlet-②
Programmation Java (variables et données)
Livres utilisés pour apprendre Java
[Java] Compréhension débutante de Servlet-①
Importer des données Excel avec Java 2
Test de compétence Java 2018 pour les nouveaux arrivants - Principes de base-
(Pour les débutants) [Rails] Installer Devise
Importer des données Excel avec Java
[Pour les débutants] À propos de la syntaxe JavaScript expliquée par Java Gold
[Pour les super débutants] Ant super introduction
Plus utilisable Enumerable pour les débutants
Java thread sans danger pour vous
[Java] Conseils pour l'écriture de la source
Importer des données Excel avec Java 3
Les débutants en Java lisent Hello World
Emplacement d'installation Java pour Mac
Présentation de Spring Boot2, un framework Java pour le développement Web (pour les débutants)