Fehlerbehebung von Java Setter Getter

Inhaltsverzeichnis

Eine Geschichte, nach der ich eine Woche lang süchtig war, weil Getter und Setter einen Kompilierungsfehler hatten

Deshalb habe ich diesen Artikel geschrieben. Wenn Sie nur schreiben möchten, wird dieser Artikel durch empfohlen.

Derzeit lernt die Programmierung die Java-Sprache und ist ein Anfänger. Machen Sie zuerst etwas, das funktioniert! In diesem Sinne werden alle Variablen öffentlich beschrieben und die Objektorientierung verschoben. Dieses Mal habe ich beschlossen, mit objektorientierter Programmierung zu programmieren, aber ich war süchtig nach dem Fehler in den Setter- und Getter-Teilen und verbrachte eine Woche damit, ihn zu beheben.

Selbst wenn ich es mit Setter und Getter nachschlage, kommt nur die Geschichte der notwendigen Gruppe und der unnötigen Gruppe heraus, und nichts erklärt meinen Fehler in Grammatik oder Funktion, also war ich sehr besorgt, also schrieb ich einen Artikel wie diesen Ich bin. Die Details des Fehlers werden später beschrieben.

Voraussetzung Umgebung

Sprache Java-12.0.1 Geschrieben in einem Texteditor

Grammatik

Zunächst einmal, wie man Setter und Getter schreibt.

SetGet.java


//Variable Deklarationsklasse
class SetGet{

  //Variablendeklaration privat
privater Typ Variablenname;

  // getter
öffentlicher Variablenname{
    return this.Variablennamen;
  }

  // setter
Name der öffentlichen ungültigen Variablen(Geben Sie den entsprechenden Variablennamen ein){
    this.Variablennamen=Geeigneter Variablenname;
  }

}

Als nächstes, wie man in die Ausführungsklasse schreibt

SetgetRunner.java


//Ausführungsklasse
class SetGetRunner{
  public static void main(String[] args){
    //Erstellen von Klassenreferenzvariablen und -instanzen
    //In diesem Fall ist Klassenname = SetGet
Referenzvariable für Klassennamen=neuer Klassenname();

    //Weisen Sie einer in der SetGet-Klasse als privat deklarierten Variablen einen Wert zu
Referenzvariable.Variablennamen festlegen(Wert, den Sie zuweisen möchten);

    //Wert erhalten
Geben Sie den Variablennamen 2 ein=Referenzvariable.Variablennamen abrufen();
  }
}

Wenn Sie es auf Japanisch erklären, sieht es wie oben aus. Es ist jedoch sehr schwer zu verstehen, also schreiben wir es tatsächlich.

Setget2.java



//Klassen für Getter und Setter
class SetGet2{
  //Deklarieren Sie die Variable int vom Typ int privat
  private int apple;

  // getter
  public int getApple(){
    return this.apple;
  }

  // setter
  public void setApple(int apple){
    this.apple = apple;
  }
}

//Ausführungsklasse
class SetGet2Runner{
  public static void main(String[] args){
    //Referenzvariablen und Instanzen für Klassen erstellen
    SetGet2 setget2 = new SetGet2();
    
    //Zuweisung zu einer als privat deklarierten Variablen
    setget2.setApple(3);
    
    //Wert erhalten
    int appleQuantity = setget2.getApple();
   
    //Ausgabe
    System.out.println("Anzahl der Äpfel:" + appleQuantiry + "Ko");

    //Ausgabeergebnis
    //Anzahl der Äpfel: 3
  }
}

Es wird sein.

Funktion

Als nächstes werde ich die Funktion erklären. Getter und Setter "In der Objektorientierung stellen Variablen in einer Instanz den internen Zustand dar und basieren auf der Idee, dass sie nicht direkt von außen referenziert oder manipuliert werden sollten. Gehen Sie unbedingt die Methode durch, die dem Zugriff auf Variablen usw. entspricht. Dies hat den Vorteil, dass die Methode ordnungsgemäß überprüft und verarbeitet werden kann und der Zugriff von außen so gesteuert wird, dass kein Fehler auftritt. "

getter "Methode zum Lesen / Erfassen / Referenzieren der Werte von Elementvariablen (Attribute, Eigenschaften) innerhalb eines Objekts von außen"   settter "Methode zum Schreiben / Bearbeiten / Festlegen des Werts von Elementvariablen (Attributen, Eigenschaften) innerhalb des Objekts von außen"

(Das Obige wird aus E-Words des IT-Glossars zitiert.)

ein. Einfach ausgedrückt, warum die Idee der objektorientierten Programmierung verwendet wird. Dies bedeutet, den Zugriff von außen einzuschränken, um Fehler und Irrtümer zu vermeiden.

getter ist eine Methode, um einen Wert von außen zu erhalten, und setter ist eine Methode, um ihn von außen zu manipulieren.

Wie Sie der obigen Erklärung entnehmen können, funktioniert es tatsächlich ohne Setter, wenn Sie es nicht von außen bedienen. Sie benötigen nur einen Setter, um von einer externen Klasse aus zu arbeiten. Sie benötigen ihn also nicht, wenn Sie nur Variablen verwenden. In der Ausführungsklasse rufen Sie lediglich die Methoden getter und setter in der Deklarationsklasse auf.

Spezifischer Betriebsinhalt

Ich werde speziell erklären, wie jeder mit der oben erwähnten Setget2.java-Datei funktioniert.

Setget2.java


  Setget2 setget2 = new SetGet2();

Durch Deklarieren einer Referenztypvariablen und Erstellen einer Instanz können Sie die Setget2-Klasse verarbeiten. Wenn Sie Variablen und Instanzen vom Referenztyp in Java verstehen möchten, ist diese HP sehr einfach zu verstehen.

Setget2.java


setGet2.setApple(3);

Ich rufe die Setter-Methode der SetGet2-Klasse mit der Referenztypvariablen auf, die ich früher verarbeiten kann.

SetGet2.java


public void setApple(int apple){
  this.apple = apple;
}

Es wurde so in der Setter-Methode geschrieben. Durch Hinzufügen des numerischen Werts 3 zu int apple wird der Wert zugewiesen, der der Variablen apple der SetGet2-Klasse zugewiesen wurde. Das tun wir, indem wir den Wert der Ausführungsklasse zuweisen.

Als nächstes folgt die Bewegung auf der Seite der Werterfassung.

Setget2.java


int appleQuantity = setget2.getApple();

In der Ausführungsklasse wird die Getter-Methode der SetGet2-Klasse aufgerufen und der Variablen appleQuantity zugewiesen.

SetGet2.java


public int getApple(){
  return this.apple;
}

Hier gibt es einen Rückgabewert. Sie haben die Methode verwendet, um den Apfel, dem der Wert im Setter zuvor zugewiesen wurde, an die Ausführungsklasse zurückzugeben. AppleQuantity wird als Box deklariert, die den Rückgabewert verarbeitet, und es ist schließlich möglich, Variablen einer anderen Klasse zu verarbeiten.

Übrigens deklariert die Ausführungsklasse erneut eine neue Variable und verwendet eine Variable einer anderen Klasse. Indem Sie sie jedoch zu einer Bedingung des Ausdrucks machen, können Sie eine Variable einer anderen Klasse ohne Verwendung einer Variablen verwenden.

Zum Beispiel in einer anderen Klasse

Mass.java


private int colum;
private int row;

Angenommen, Sie erklären. Nach Zuweisung des Wertes mit 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);
}

Auf diese Weise kann jeder Wert verwendet werden, ohne ihn in eine Variable einzufügen. Schließlich brauchen wir eine Variable, um das Ergebnis des Ausdrucks zuzuweisen ...

Der Fehler, der diesmal aufgetreten ist

Nachdem ich es bisher erklärt hatte, kam ich endlich zu dem Fehlerinhalt, von dem ich eine Woche lang abhängig war. Der Code, in dem der Fehler aufgetreten ist, lautet wie folgt.

Game.java


class Card{
  //Deklaration von Variablen
  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);

  //Erklärung eines leeren Decks
  ArrayList<Integer> deckCard = new ArrayList<Integer>();

  //Ein Deck erstellen
  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();
  }  
}


Fehleranweisung

Error:Unzulässiger Typstart
  card.setMark(4);
  ^
Error: <identifier>da ist nicht
  card.setMark(1);
               ^
Error:Unzulässiger Typstart
  card.setNumber(13);
  ^
Error: <identifier>da ist nicht
  card.setNumber(13);
               ^

Ursache

Wie Sie durch einen Vergleich mit dem Beispielsatz sehen können, setzen Sie Es gibt keine Hauptmethode in der Klasse. Ich konnte den Wert in einer Klasse ohne die Hauptmethode abrufen, aber es scheint, dass der Wert ohne die Hauptfunktion nicht manipuliert werden kann.

Ich wusste nicht, dass ich den Wert erst später in der Hauptfunktion einstellen konnte, und ich war eine Woche lang süchtig danach, weil ich nur die Grammatik von Setter und Getter betrachtete. Beim Vergleich meines Codes mit dem Referenzcode war dies ein Fehler, da der von mir betrachtete Bereich eng war.

Bitte seien Sie auch vorsichtig. Ich verstehe nicht, warum es nur mit der Hauptmethode ausgeführt werden kann, also warte ich darauf, dass jemand anderes es erklärt.

Ich möchte sachkundige Personen fragen, ob dies überhaupt notwendig ist oder nicht.

Danke fürs Lesen.

Referenz

  1. August 2014 Erste Ausgabe von Kiyotaka Nakayama / Daigo Kunimoto, herausgegeben von Impress Co., Ltd. [Einführung in 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

Zugriff am 4. Juli 2019 Einfache Einführung in Java

Zugriff am 4. Juli 2019 Einführung in die Objektorientierung von Java

Zugriff am 4. Juli 2019 E-Word zum IT-Glossar

Recommended Posts

Fehlerbehebung von Java Setter Getter
Der heutige Java-Fehler
Gegenmaßnahmen gegen Java-Fehler
Fehlerquellen bei Java Math.sqrt
Fehlerbehebung bei Heroku
[Anfänger] Java-Klassenfeldmethode / Kapselung (Getter-Setter) [Anmerkung 25]
Konfrontieren Sie Java-Gleitkommafehler
Fehler beim Spielen mit Java
Lomboks @Getter @Setter-Betriebsnotizen
Zusammenfassung der Java-Fehlerverarbeitung
Automatische Generierung von Konstruktor, Getter / Setter
Spring Boot + PostgreSQL-Fehlerbehebungsmethode
Commit fehlgeschlagene Fehlerbehebung für Exit-Code 1