[JAVA] Über Klassen und Instanzen (Evolution)

Wie ich diesen Artikel geschrieben habe

Im letzten Beitrag

Unterschied zwischen Klasse und Instanz

Ich habe einen Artikel geschrieben.

Als Beispiel habe ich eine Autoinstanz mit dem Namen "Benz" als Instanz mit einem Auto als Klasse erstellt, aber ich habe einen Kommentar von einer Person erhalten, die den Artikel gelesen hat, dass die Erklärung grob war, also habe ich den vorherigen Inhalt geschrieben Ich werde einen abgedeckten Artikel schreiben. (Der vorherige Artikel wurde reduziert, um Anfängern das Vorstellen von Klassen und Instanzen zu erleichtern.)

Welcher Teil der Erklärung war überhaupt grob?

Hier ist der Teil, auf den Sie hingewiesen haben.

Jede Instanz hat unterschiedliche Eigenschaften. Selbst wenn Sie ein schwarzes Auto bauen, werden einige von ihnen Toyota-Autos sein, andere Benz-Autos, sie werden sich in Größe und Form unterscheiden und keines von ihnen wird dieselbe Instanz haben.

In dieser Hinsicht

Erstens hat Toyota eine Konstruktionszeichnung von Toyota, und Benz hat eine Konstruktionszeichnung von Benz, und es ist schwierig, sie in einer Fahrzeugklasse zusammenzufassen und von dort aus ein Auto von Benz oder Toyota zu erstellen. Im Fall von Toyotas Prius ist das Erscheinungsbild beispielsweise das gleiche, aber die Instanzen unterscheiden sich in Kilometerstand, verbleibender Benzinmenge usw., und selbst wenn sie das gleiche Erscheinungsbild haben (gleiche Klasse, gleicher Typ), sind die Eigenschaften für jede Instanz unterschiedlich. Dies ist der Unterschied für jede Instanz.

Es war das. Ich dachte, das wäre diesmal wahr

Beim Berühren dieser drei Punkte ist es weiter fortgeschritten als der vorherige Artikel Erklären Sie ** Klassen ** und ** Instanzen **

Klassenvererbung

Klassen haben die Idee der Klassenvererbung. Wenn Sie das Klassenteil in eine Konstruktionszeichnung umschreiben, wird es zu "** Vererbung der Konstruktionszeichnung **". Wenn Sie am Beispiel des vorherigen Artikels eine [Car2] -Designzeichnung (Car2-Klasse) erstellen, die die [Car] -Designzeichnung (Car-Klasse) erbt, [Car2] Die Konstruktionszeichnung ist

Beide können verwendet werden.

Wenn beispielsweise die obige Konstruktionszeichnung [Car2](Klasse Car2) als Konstruktionszeichnung [Nissan](Fahrzeugklasse Nissan) verwendet wird, ** Nissan Fahrzeugklasse wird automatisch mit der Idee der Vererbung vererbt, ohne den in Auto definierten Inhalt in die Klasse zu schreiben (Konstruktionszeichnung) **

Dieses Mal werden wir es im Voraus definieren.

--Car Klasse --NissanCar_serena Klasse

Wird so erstellt, dass die NissanCar_serena-Klasse von der Car-Klasse erbt. *** Wir gehen davon aus, dass es allgemein bekannt ist, dass ein Auto mit einem vierrädrigen Fahrzeug auf dem Boden fahren kann **.


alt


Lassen Sie uns eine Entwurfszeichnung (Klasse) erstellen

Autoklasse

Car.java


class Car {
    static Boolean isHaving4tires = true; ///① Das Auto hat absolut vier Reifen

    static Boolean canDriveOnGround = true; ///② Das Auto wird definitiv auf dem Boden fahren

    String name; ///③ Jede Instanz hat einen anderen Namen

    String color; ///④ Jede Instanz hat eine andere Farbe

    Boolean isHavingWindow; ///⑤ Jede Instanz kann ein Fenster haben oder nicht.

    public void setNameAndColor(String n, String c) { 
        this.name = n;  ///⑥ Ich werde den Namen und die Farbe für die Instanz festlegen
        this.color = c;
    }

    public void checkWindow(Boolean b) { 
        this.isHavingWindow = b  ///⑦ Ich werde festlegen, ob die Instanz ein Fenster hat oder nicht
    }
}

Inhalt der Definition der Fahrzeugklasse (Fahrzeugkonstruktionszeichnung)

① Ich habe eine Variable vom Typ Boolean mit 4 Reifen erstellt und festgestellt, dass dies absolut richtig ist. (2) Ich habe eine Variable vom Typ Boolean erstellt, die auf dem Boden ausgeführt werden kann, und festgestellt, dass dies absolut wahr ist. (3) Der Name, der für jede Instanz geändert werden kann, wird durch eine Variable vom Typ String definiert. (4) Die Farbe, die sich für jede Instanz ändern kann, wird durch eine Variable vom Typ String definiert. (5) Die Information "ob es ein Fenster gibt oder nicht", die sich für jede Instanz ändern kann, wird durch eine Variable vom Typ Boolean definiert. (6) Es wurde eine Methode zum Festlegen des Namens und der Farbe für jede Instanz definiert. (7) Wir haben für jede Instanz eine Methode zum Festlegen der Informationen "ob es ein Fenster gibt" definiert.

NissanCar_serena Klasse

Car.java


class NissanCar extends Car {
    
    static String whichMadeByCompany = "Nissan"; ///①絶対にNissanで作成された車です

    String whereBought; ///(2) Es enthält Informationen darüber, "wo es gekauft wurde", die für jede Instanz unterschiedlich sein können.
    
    public void setWhereBought(String w) { 
        this.whereBought = w;  ///③ Legen Sie die Instanz fest, in der es gekauft wurde.
    }
}

Inhalt der Definition der Klasse NissanCar_serena (Konstruktionszeichnung NissanCar_serena)

(1) Definiert, wo es mit einer Variablen vom Typ String erstellt wurde, und bestimmt, dass es sich absolut um Nissan handelt. (2) Die Informationen "wo gekauft wurde", die sich für jede Instanz ändern können, werden durch eine Variable vom Typ String definiert. (3) Es wurde eine Methode zum Festlegen des Namens und der Farbe für jede Instanz definiert.

Damit ist die Erstellung der Konstruktionszeichnung (Klasse) abgeschlossen.

Klassenvariable

Anhand der obigen Entwurfszeichnung (Klasse) erkläre ich, was als Klassenvariable bezeichnet wird. Was ist eine Klassenvariable?

ist

Daher sind die Klassenvariablen, auf die in der obigen Klasse Bezug genommen wird (Konstruktionszeichnung)

In der Autoklasse

--static Boolean isHaving4tires = true; (4 Reifen zu haben ist eine andere Instanz, ändert sich aber nicht) --static Boolean canDriveOnGround = true; (Laufen auf dem Boden bedeutet verschiedene Instanzen, aber keine Änderung)

In der Klasse NissanCar_serena

--static String whichMadeByCompany = "Nissan"; (Welches Unternehmen es erstellt hat, ändert sich nicht, obwohl die Instanz anders ist.)

Wenn Sie Informationen zu Klassenvariablen erhalten möchten

Klassenname. Name der Klassenvariablen Sie können den Wert der Klassenvariablen abrufen, indem Sie dies tun.

Lassen Sie uns den Wert der Klassenvariablen mit der obigen Klasse ermitteln (1) Ich möchte den Wert der Klassenvariablen "isHaving4tires" in der Car-Klasse erhalten.

Car.isHaving4tires //true NissanCar_serena.isHaving4tires // true → NissanCar_serena ist das Vererbungsziel der Fahrzeugklasse

(2) Ich möchte den Wert der Klassenvariablen whichMadeByCompany in der Klasse NissanCar_serena erhalten.

NissanCar_serena.whichMadeByCompany //" Nissan "

Instanzvariable

Was ist eine Instanzvariable?

ist. Daher ist die Instanzvariable, auf die in der obigen Klasse verwiesen wird (Konstruktionszeichnung)

In der Autoklasse

--Stringname; (haben unterschiedliche Namen für jede Instanz) --String-Farbe; (kann für jede Instanz unterschiedliche Farben haben) --Boolean isHavingWindow (variiert, ob jede Instanz ein Fenster hat oder nicht)

In der Klasse NissanCar_serena

--String whereBought; (Informationen darüber, wo der Kauf getätigt wurde, können von Fall zu Fall unterschiedlich sein.)

Wenn Sie Informationen zu Instanzvariablen erhalten möchten

Instance.variable name

Lassen Sie uns den Wert der Instanzvariablen mit der obigen Klasse ermitteln

(1) Erstellen Sie eine Instanz der Car-Klasse und der NissanCar_serena-Klasse, legen Sie den Namen und die Farbe (Mikes Auto, rot) fest und rufen Sie die Instanzvariablen name, color ab.

test.java


  
   void test() {
   
   Car myCar = new Car();
   myCar.setNameAndColor("Mikes Auto","rot");
   System.out.print(myCar.name); //Greifen Sie mit dem Namen der Instanzvariablen auf die Instanz myCar zu"Mikes Auto"Erhalten
   System.out.print(myCar.color); //Greifen Sie mit der Instanzvariablenfarbe auf die Instanz myCar zu"rot"Erhalten

   NissanCar_serena myCar2 = new NissanCar_serena();
   myCar2.setNameAndColor("Mikes Auto","rot");
   System.out.print(myCar2.name);//Greifen Sie mit dem Namen der Instanzvariablen auf die Instanz myCar2 zu"Mikes Auto"Erhalten
   System.out.print(myCar2.color);//Greifen Sie mit der Instanzvariablenfarbe auf die Instanz myCar2 zu"rot"Erhalten

  }
}

(2) Erstellen Sie eine Instanz der Klasse NissanCar_serena, legen Sie fest, wo Sie sie gekauft haben, und rufen Sie die Instanzvariable whereBought ab.

test.java


  
   void test2() {

   NissanCar_serena myCar2 = new NissanCar_serena();
   myCar2.setWhereBought("Tokio");
   System.out.print(myCar2.whereBought);//Greifen Sie mit der Instanzvariablen wherebought auf die Instanz myCar2 zu"Tokio"
  }
}

Beim Schreiben dieses Artikels fiel mir die Instanzvariable ** der geerbten Klasse NissanCar_serena ** auf.

Wie oben erklärt

** Instanzvariablen sind für jede Instanz unterschiedlich ** ** Klassenvariablen sind für jede Klasse unterschiedlich **

Als ich versuchte, eine Instanzvariable zu definieren, als ich mir den Unterschied zwischen Instanzen in der NissanCar_serena-Klasse vorstellte, die nicht in Car enthalten ist, ist NissanCar ein kommerzielles Auto namens Nissan, während die Car-Klasse noch kommerziell ist oder nicht. Da es unbekannt ist, verwenden Sie den Unterschied, um zu definieren, wo es gekauft wurde.

public String whereBought = "";

Wurde definiert. Die Möglichkeit ist sehr gering, aber es besteht die Möglichkeit, dass Leute, die ein Auto von Grund auf neu bauen und es für sich selbst benutzen (lachen)

Auch in der Fahrzeugklasse definiert

public Boolean isHavingWindow;

In Bezug auf die Instanzvariable möchte ich, dass Sie sich das folgende Bild vorstellen.

alt

Vielen Dank für das Surfen. Ich würde mich freuen, wenn Sie einen Kommentar abgeben könnten, wenn Sie einen haben.

Recommended Posts

Über Klassen und Instanzen (Evolution)
Über Klassen und Instanzen
Überlegungen zu Klassen und Instanzen
Informationen zu Ruby-Klassen und -Instanzen
Ruby-Klassen und -Instanzen
Java (Klasse und Instanz)
Erste Schritte mit Java_Kapitel 8_Über "Instanzen" und "Klassen"
Erstellen von Ruby-Klassen und -Instanzen
Unterschiede zwischen Klassen und Instanzen in Ruby
Organisieren Sie Klassen, Instanzen und Instanzvariablen
Klassen und Instanzen Java für Anfänger
Java-Programmierung (Klassen und Instanzen, Hauptmethoden)
Über die Standardklasse
Schreiben Sie Code mit Ruby-Klassen und -Instanzen
Java-Klasse, Instanz, Objekt
HashMap- und HashSet-Klassen
String-Literale und Instanzen
Über Bean und DI
[Java] Über anonyme Klassen
Über bekommt und bekommt.chomp
Über Weiterleiten und Weiterleiten
Über Kapselung und Vererbung
Liste und fröhliche Klassen
Informationen zu Serializable und serialVersionUID
In der Abbildung verstandene Java-Klassen und -Instanzen
[Für Anfänger] Erläuterung von Klassen, Instanzen und Statik in Java
Über für Anweisung und wenn Anweisung
[Java] Generics-Klasse und Generics-Methode
Über Ruby-Hashes und -Symbole
[Java] Über String und StringBuilder
Ungefähr der gleiche und der gleiche Wert
Über die Zupfmethode und die ID-Methode
Über Java-Paket und Import
Über Ruby und Objektmodell
[Ruby] Singuläre Methoden und singuläre Klassen
Über Java Abstract Class
Ruby-Methoden und -Klassen (grundlegend)
Über Instanzvariablen und attr_ *
Java abstrakte Methoden und Klassen
Informationen zu statischen und nicht statischen Java-Methoden
Erfahren Sie mehr über Edelsteine und Bündler
Informationen zu den Methoden equals () und hashcode ()
[Java-Anfänger] Über Abstraktion und Schnittstelle
Über Ruby einfache Anführungszeichen und doppelte Anführungszeichen
[Ruby] Klassen, Instanzvariablen, Instanzen usw.
Informationen zur Einstellungsphase und Ausführungsphase von Gradle
Aufrufen von Klassen und Methoden
Informationen zum Ruby-Produktoperator (&) und zum Summenoperator (|)
Informationen zu removeAll und RetainAll von ArrayList
Java Generics (definiert Klassen und Methoden)
If-Anweisung und Verzweigungsverarbeitung
Über objektorientierte Vererbung und über Ertrag Ruby
Informationen zu primitiven Java-Typen und Referenztypen
Überlegungen zu Schienen und sauberer Architektur