Java für Anfänger, Daten verstecken

Nachtrag: 2020/3/13 Da in dem Kommentar darauf hingewiesen wurde, dass der Inhalt dieser Zeit eher "versteckte Daten" als "Kapselung" war, wurde er korrigiert. Der Titel hat sich auch von Kapselung zu Datenverstecken geändert.

Einführung

Dieser Artikel ist ein Memorandum. Obwohl es sich um einen Inhalt auf Referenzebene handelt, lautet der in diesem Artikel zu veröffentlichende Code ~~ ** Der Fehler ** ist das Zentrum. Dies dient dazu, den Teil zu veröffentlichen, der beim Codieren tatsächlich falsch war, und ihn zur Selbstreflexion zu veröffentlichen. ~~ Außerdem werde ich hier nicht auf den tiefen Teil eingehen, da ich ihn später überprüfen werde, während ich auch die Fragen zur Java Silver-Prüfung studiere.

Umgebung

Sprache: Java11, JDK13.0.2 Betriebsumgebung: Windows 10

Beschränken Sie den Zugriff auf Mitglieder

Ich habe bestätigt, dass die von new erstellte Instanz eigene Mitglieder (Felder und Methoden) hat, die von der Klasse geerbt wurden. Aber in der letzten "Cat" -Klasse

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

Und der Wert, der beim Erstellen der Klasse "Cat" nicht erwartet wurde, kann innerhalb der Methode "main" beliebig gespeichert werden. Das Zulassen des Zugriffs auf das Feld ** (diesmal "doppeltes Gewicht") **, das in der Klasse "Cat" direkt innerhalb der "main" -Methode festgelegt wurde, kann zu Problemen führen.

private Wenn also "Ich möchte ein Mitglied (Feldmethode) haben, das nicht von außerhalb der Klassenverarbeitung verarbeitet werden kann", ist der an das Mitglied angehängte Modifikator (Feldmethode) ** privat **.

Dieses Mal möchte ich die Cat-Klasse behandeln, indem ich von der Farbe des Typs String zur Höhe des doppelten Typs wechsle.

classCat erneut herausfordern


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

  public void setWeightHeight(double w,double h)
  {
    if(w > 0 && w <= 50){
    weight = w;
    System.out.println("Das Gewicht dieser Katze" + weight + "Ich habe es kg gemacht.");
    } else{
        System.out.println("Ich glaube nicht, dass ich dieses Gewicht habe ...");
      }
   
    if(h > 0 && h <= 200){
    height = h;
    System.out.println("Die Größe dieser Katze" + height + "Ich habe es cm gemacht.");
    } else{
    System.out.println("Ich habe noch nie von einer Katze dieser Größe gehört ...");
      }
  }

  double getWeight()
  {
    System.out.println("Aktualisieren Sie das Gewicht der Katze.");
    return weight;
  }

  double getHeight()
  {
    System.out.println("Aktualisieren Sie die Größe der Katze.");
    return height;
  }

  void introduce()
  {
    System.out.println("Das Gewicht dieser Katze" + weight + "Es ist kg.");
    System.out.println("Die Größe dieser Katze" + height + "cm.");
  }
}

Da die "Gewichtsgröße" der Cat-Klasse jetzt "privat" ist, besteht kein Grund zur Sorge, dass der Wert manipuliert wird.

public Aber wenn Sie den Wert wirklich nicht ändern können, können Sie den Wert der neuen myCat-Instanz, die Sie new möchten, nicht ändern. Aber in der Cat Klasse

public void setWeightHeight(double w,double h)

Ich möchte, dass Sie darauf achten. Dies ist eine in der Cat-Klasse definierte Methode, deren Modifikator jedoch auf ** public ** gesetzt ist. Dies ist ein Modifikator "Zugriff von außerhalb der Klasse zulassen" während der Verarbeitung

weight = w; height = h;

Und ** Zugriff auf das Feld ** privat **. Von den Methoden wird die Tatsache verwendet, dass von Methoden in derselben Klasse auf "privat" zugegriffen werden kann, und die Speicherung auf den Wert "privat" über ** In-Method-Verarbeitung ist möglich. Dürfen **.

public void setWeightHeight(double w,double h) Enthält eine if-Anweisung, die die Zuweisung von Werten verhindern kann, die die Bedingungen nicht erfüllen. Jetzt müssen Sie sich keine Sorgen mehr machen, lächerliche Werte zu speichern.

Am Ende

Zu dem Vorgang, den ich diesmal gesehen habe: "Verwenden Sie eine Methode, um einen Wert im Feld" privat "zu speichern." Zitat aus dem Nachschlagewerk Easy Java 7th Edition

Eine Funktion, die Daten (Felder) und Funktionen (Methoden) in einer Klasse zusammenfasst und den Mitgliedern, die Sie schützen möchten, eine private Funktion zuweist, damit auf sie nicht ohne Erlaubnis zugegriffen werden kann.

Ist. Dieses funktionale Design ** ~~ Kapselung ~~ Daten verstecken ** I nenne es. Dies ist ** eines der Grundprinzipien des objektorientierten Entwurfs **, und zu diesem Zweck werden Klassen erstellt. Ich werde mich wieder mit anderen Prinzipien befassen, aber sie sind alle wichtige Prinzipien, deshalb möchte ich sie fest erfassen.

Referenz

Ich schreibe und kompiliere Variablen und Ausdrücke so oft wie möglich selbst. Wenn ich sie also vollständig zitieren möchte, werde ich sie beschreiben.

Easy Java 7th Edition Java SE11 Silver Problem Collection (allgemein bekannt als Kuromoto)

Recommended Posts

Java für Anfänger, Daten verstecken
Java-Debug-Ausführung [für Java-Anfänger]
[Java] Grundlegende Aussage für Anfänger
Java-Anwendung für Anfänger: Stream
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Anfänger spielen Janken-Spiele in Java
Java für Anfänger, Ausdrücke und Operatoren 1
[Für Anfänger] Führen Sie Selenium auf Java aus
Java für Anfänger, Ausdrücke und Operatoren 2
[Für Java-Anfänger] Informationen zur Ausnahmebehandlung
Klassen und Instanzen Java für Anfänger
Für JAVA-Lernen (2018-03-16-01)
Lernen Sie aus "Na und", den Grundlagen von Java [für Anfänger]
2017 IDE für Java
Java für Anweisung
Eine Sammlung einfacher Fragen für Java-Anfänger
[Einführung in Java] Grundlagen der Java-Arithmetik (für Anfänger)
Verwenden wir Java New FileIO! (Einführung für Anfänger)
[Java] für Anweisung, während Anweisung
[Java] Paket für die Verwaltung
[Java] für Anweisung / erweitert für Anweisung
[Java] Datentyp ①-Basistyp
Gegenmaßnahmen für OutOfMemoryError in Java
NLP für Java (NLP4J) (2)
(Memo) Java für Anweisung
NLP für Java (NLP4J) (1)
[Java] Hauptdatentypen
Java-Grunddatentypen
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
Generieren Sie Dummy-Daten für verschiedene Tests mit Faker (Java)
[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
Einführung in Java für Anfänger Grundkenntnisse der Java-Sprache ①
Java Häufig verwendete Anweisungsliste (für Anfänger und Anfänger)
[Für Anfänger] ○○. △△ in Ruby (ActiveRecord-Methode, Instanzmethode, Datenerfassung)
[Für Anfänger] Erläuterung von Klassen, Instanzen und Statik in Java
[Java Bronze-Lernen] Unterschied zwischen Kapselung, Ausblenden von Daten und Ausblenden von Informationen
Java-Lernnotiz (Datentyp)
[Java] Anfängerverständnis von Servlet-②
Java-Programmierung (Variablen und Daten)
Bücher zum Erlernen von Java
[Java] Anfängerverständnis von Servlet-①
Importieren Sie Excel-Daten mit Java 2
2018 Java Proficiency Test für Newcomer-Basics-
(Für Anfänger) [Rails] Installieren Sie das Gerät
Importieren Sie Excel-Daten mit Java
[Für Anfänger] Über die von Java Gold erklärte JavaScript-Syntax
[Für Super-Anfänger] Ameise Super-Einführung
Mehr verwendbar Aufzählbar für Anfänger
Java-Thread sicher für Sie
[Java] Tipps zum Schreiben der Quelle
Importieren Sie Excel-Daten mit Java 3
Java-Anfänger lesen Hello World
Java-Installationsort für Mac
Einführung von Spring Boot2, einem Java-Framework für die Webentwicklung (für Anfänger)