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.)
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 **
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 **.
serena
Ist ein Nissan-Auto und das Auto meiner Eltern. Ich werde das Bild so platzieren, dass es leicht vorstellbar ist. Bitte beachten Sie, dass dieses Bild nur eine Instanz aus einer Konstruktionszeichnung ist.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
}
}
① 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.
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.
}
}
(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.
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)
--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)
--static String whichMadeByCompany = "Nissan"; (Welches Unternehmen es erstellt hat, ändert sich nicht, obwohl die Instanz anders ist.)
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 "
Was ist eine Instanzvariable?
ist. Daher ist die Instanzvariable, auf die in der obigen Klasse verwiesen wird (Konstruktionszeichnung)
--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)
--String whereBought; (Informationen darüber, wo der Kauf getätigt wurde, können von Fall zu Fall unterschiedlich sein.)
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.
Vielen Dank für das Surfen. Ich würde mich freuen, wenn Sie einen Kommentar abgeben könnten, wenn Sie einen haben.
Recommended Posts