[Java] Verschiedene Zusammenfassungen an die Leiter von Klassen und Mitgliedern

Statisches Mitglied

Setzen Sie einfach "statisch" in den Anfang. Das folgende Beispiel zeigt mehrere Personen, die eine Brieftasche halten. In diesem Fall besteht die Idee darin, dass die Klasse "Mensch" keine Felder hat, aber jede menschliche Instanz "h1", "h2" Felder hat. Daher werden statische Felder auch als ** Klassenvariablen ** bezeichnet.

Human.java


public class Human{
     static int money=100;
}

Main.java


public class Main{
     public static void main(String[] args){
          //Erstellen Sie die erste Instanz
          Human h1 = new Human();
          //Erstellen Sie eine zweite Instanz
          Human h2 = new Human();

          // h1.Schreiben Sie die Geldklassenvariable neu
          h1.money=200;

          // h2.Geldvariable anzeigen
          System.out.println(h2.money);
          //Da Geld eine Klassenvariable ist, sollte es als 200 angezeigt werden
     }
}

Statische Methoden können aufgerufen werden, ohne eine Instanz zu erstellen. Also im obigen Beispiel plötzlich

Main.java


System.out.println(Human.money);

Es ist okay, so etwas zu schreiben. Deshalb ist die Hauptmethode eine statische Methode.

Verkapselung#

Eine Möglichkeit, eine Kapselung zu erreichen, besteht darin, Klassen und Mitgliedern Zugriffsmodifikatoren hinzuzufügen, um die Sichtbarkeit festzulegen.

--public: Alle Klassen --protected: Klassen, die zum selben Paket gehören wie Sie oder von Ihnen erben --packaged private (Standard): Klassen, die zum selben Paket gehören wie Sie --private: Nur deine eigene Klasse

Test.java


public class Test{
     private int i=1;
     public void calc(int j){
          return this.i+j;
     }
}

Getter und Setter

Setzen Sie das Feld auf "privat" und die Methode auf "öffentlich" und schreiben Sie die grundlegende Methode zum Übergeben von Werten mit Getter und Setter.

Test.java


public class Test{
    private int num;

    public int getNum(){
        return this.num;
    }

    public void setNum(int num){
        this.num = num;
    }
}

Vererbung / Implementierung

Vererbung (erweitert)

Hier die Vererbungsbeziehung von Inu Shibainu. Beachten Sie, dass die "osuwari" -Methode abstrahiert ist und von der "Shibainu" -Klasse überschrieben werden muss.

Inu.java


public abstract class Inu{
    public void ote(){
        System.out.println("Halten Sie Ihre linke Hand aus");
    }
    
    public abstract void osuwari();
        //Ich schreibe hier nichts
}

Shibainu.java


public class Shibainu extends Inu{
    public void osuwari(){
        System.out.println("Setz dich auf den Boden");
    }

    public void mate(){
        System.out.println("Mit Reis aushalten");
    }
}

Main.java


public class Main{
    public static void main(Strgin[] args){
        Shibainu dog = new Shibainu();

        dog.ote();      //Inu-abgeleitete Methode
        dog.osuwari();  // Inu(←Shibainu)Ursprungsmethode
        dog.mate();     //Von Shibainu abgeleitete Methode
    }
}

Verwendung von ** Polymorphismus **

Main.java


Inu dog = new Shibainu();

dog.osuwari();

Das kann man auch sagen.

In diesem Fall können nur die Methoden aufgerufen werden, über die die Inu-Klasse verfügt. Selbst wenn die tatsächlich erstellte Instanz "Shibainu" ist, kann "dog.mate" daher nicht aufgerufen werden. Wenn die "osuwari" -Methode aufgerufen wird, wird die Methode von "Shibainu" anstelle der Methode von "Inu" verarbeitet.

Unter Verwendung dieses Polymorphismus kann auch die folgende Verarbeitung geschrieben werden.

Main.java


Inu[] dogs = new Inu[3];

Inu[0] = new Shibainu();
Inu[1] = new Akitaken();
Inu[2] = new Tosaken();

for (Inu d: dogs){
    d.osuwari();
}

Es ist sehr praktisch, wenn sich die Inhalte derselben "Mate" -Methode wie "auf dem Boden sitzen", "schlafen" und "nicht zuhören" je nach Klasse unterscheiden.

Implementierungen

Es gibt zwei Bedingungen, die eine Klasse zu einer Schnittstelle machen können.

"Grundsätzlich" liegt daran, dass nur Felder (Konstanten) mit "public static final" deklariert werden dürfen. In diesem Fall kann jedoch "public static final" weggelassen werden.

Deklarieren Sie "Schnittstelle" anstelle von "Klasse".

Animal.java


public interface Animal{
    void run();
}

Inu.java


public class Neko implements Animal{
    void run(){
        System.out.println("Laufen Sie auf vier Beinen");
    }
}

Da die Schnittstelle mehrere Implementierungen erlaubt

Neko.java


public calss Neko extends Mammal implements Animal, Organic{
    //Es hat Säugetierklasse, Tierschnittstelle und organische Schnittstelle als Eltern.
}

Sie können auch so schreiben. Die Katzenklasse hat eine Säugetierklasse als Eltern und eine Schnittstelle zwischen Tieren und organischen Substanzen. Es ist kein sehr gutes Beispiel.

Das Schöne an der Interface / Abstract-Methode ist

So ein Ort.

Nachschlagewerk

[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) Pp.332-524

Recommended Posts

[Java] Verschiedene Zusammenfassungen an die Leiter von Klassen und Mitgliedern
In der Abbildung verstandene Java-Klassen und -Instanzen
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Befehl zum Überprüfen der Anzahl und des Status von Java-Threads
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
Ich habe versucht, die Methoden von Java String und StringBuilder zusammenzufassen
Ausgabe des Buches "Einführung in Java"
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
[Java-Verbesserungsfall] Wie man die Grenze des Selbststudiums und darüber hinaus erreicht
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Über die Idee anonymer Klassen in Java
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
[Java] Der verwirrende Teil von String und StringBuilder
Ich habe die Eigenschaften von Java und .NET verglichen
Java Willkommen im Sumpf der zweidimensionalen Arrays
Unterschied zwischen Java, C # und JavaScript (wie man den Grad der Fettleibigkeit findet)
[Java] So erhalten Sie die URL der Übergangsquelle
Java-Ingenieure vergleichen nun, um die grundlegende Grammatik von Ruby Teil 2 (Klassen, Methoden) zu lernen.
Wie schreibe ich Scala aus der Perspektive von Java
[Java] Arten von Kommentaren und wie man sie schreibt
Bitte beachten Sie die Aufteilung (Aufteilung) von Java Kotlin Int und Int
Der Vergleich von enum ist == und gleich ist gut [Java]
Konvertieren Sie das Array von error.full_messages in Zeichen und geben Sie es aus
Den aktuellen Status von Java organisieren und die Zukunft betrachten
Java-Sprache aus der Sicht von Kotlin und C #
[Java] So erhalten Sie den Maximalwert von HashMap
Ich habe die Typen und Grundlagen von Java-Ausnahmen zusammengefasst
Java: Verwenden Sie Stream, um den Inhalt einer Sammlung zu sortieren
Äquivalenter Vergleich von Java-Wrapper-Klasse und primitivem Typ
Java (Klasse und Instanz)
Einstellungsmethode zum Verknüpfen von Java von Eclipse und Github / September 2017
[Für Anfänger] Erläuterung von Klassen, Instanzen und Statik in Java
[Hinweis] Java Ausgabe der Summe von ungeraden und geraden Elementen
Generieren und Ausführen der Jar-Datei der zum Paket gehörenden Java-Datei
Ich habe das Verhalten von Java Scanner und .nextLine () nicht wirklich verstanden.
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
20190803_Java & k8s on Azure Die Geschichte vom Festivalbesuch
Java-Anfänger fassten das Verhalten von Array und ArrayList kurz zusammen
[Java] Um die Typinformationen der Typparameter zur Laufzeit zu kennen
So leiten Sie den letzten Tag des Monats in Java ab
[Java] Verwenden Sie ResolverStyle.LENIENT, um Datum und Uhrzeit gut zu handhaben
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Die Geschichte, Java mithilfe der BitBucket-Pipeline nach Heroku zu bringen
So überprüfen Sie die Erweiterung und Größe der hochgeladenen Dateien
Stellen Sie sicher, dass Sie das Java compareTo-Ergebnis mit 0 vergleichen
Wiedereinführung in Java for Humanities 0: Den Akt der Programmierung verstehen
[Java] Ich habe über die Vorzüge und Verwendungen von "Schnittstelle" nachgedacht.
[Java] Generics-Klasse und Generics-Methode
[Java] Klassen, Konstruktoren, statische Elemente
Vor- und Nachteile von Java
Java abstrakte Methoden und Klassen
Eingabe in die Java-Konsole
Lesen Sie die Daten der Shizuoka Prefecture Point Cloud DB mit Java und versuchen Sie, die Baumhöhe zu ermitteln.
[Rails] So erhalten Sie die URL der Übergangsquelle und leiten sie um
[Java] Ordnen Sie die Daten des vergangenen Montags und Sonntags der Reihe nach an
[Swift5] So erhalten Sie ein Array und eine Reihe von Unterschieden zwischen Arrays