Heim  >  Artikel  >  Java  >  Objektorientiert (Schnittstelle, Polymorphismus)

Objektorientiert (Schnittstelle, Polymorphismus)

巴扎黑
巴扎黑Original
2017-06-26 11:09:541019Durchsuche

Schnittstelle

(1) Wenn die Methoden in der abstrakten Klasse abstrakt sind, stellt Java eine neue Ausdrucksform bereit: Schnittstelle, bei der es sich um eine Sammlung von Funktionen handelt, die nicht erstellt werden können
(2) Format
Übergeordnete Schnittstelle: öffentliche Schnittstelle Tnter{


}
Unterklasse: öffentliche Klasse interImp implementiert Itner{

}

Verwendung von Schnittstellen
1. Schnittstellen können keine Objekte erstellen
2. Implementierungsklassen definieren, um Schnittstellen zu implementieren
Implementierungsschlüsselwörter implementieren
3. Abstrakte Methoden überschreiben
4. Erstellen Sie Implementierungsklassenobjekte und rufen Sie Methoden auf


Merkmale von Schnittstellen
1. Muss nicht durch Zusammenfassung geändert werden
2 .Eine Klasse implementiert eine Schnittstelle, die einzeln oder auf mehrere Arten implementiert werden kann
3. Eine Schnittstelle kann von einer Schnittstelle entweder einzeln oder auf mehrere Arten erben
4. Die Funktionen einer Schnittstelle und einer übergeordneten Klasse können wiederholt werden, Das bedeutet, dass sie bestimmte Funktionen haben müssen.

Member-Eigenschaften von Schnittstellen
Member-Variablen, statische Konstanten
Fester Modifikator public static final
Unabhängig davon, ob dieser Modifikator geschrieben ist oder nicht bleibt unverändert

Member-Methode
Fester Modifikator öffentliche Zusammenfassung
Ob geschrieben oder nicht, dieser Modifikator bleibt unverändert

Abstrakte Klasse und Unterschiede in Schnittstellen
1. Unterschiede in den Mitgliedern
Abstrakte Klasse:
Mitgliedsvariablen: Können Variablen oder Konstanten sein
Konstruktor: Es gibt einen Konstruktor für die Instanziierung von Unterklassen. Verwenden Sie die Mitgliedsmethode
: Das kann abstrakt oder nicht abstrakt sein
Schnittstelle:
Mitgliedsvariable: kann nur eine Konstante sein
Standardmodifikator: öffentliches statisches Finale

Mitgliedsmethode: Kann nur abstrakt sein
Standardmodifikator: öffentliche Zusammenfassung

Empfehlung: Bitte geben Sie den Standardmodifikator immer manuell ein
2. Der Unterschied zwischen Klassen und Schnittstellen
Klassen und Klassen:
Vererbungsbeziehung, nur Einzelvererbung ist möglich, mehrstufige Vererbung ist möglich

Klassen und Schnittstellen:
Implementierungsbeziehung, einzelne Implementierung oder mehrere Implementierungen sind möglich
Klasse auch Sie können eine Klasse erben und mehrere Schnittstellen gleichzeitig implementieren

Schnittstelle und Schnittstelle:
Vererbungsbeziehung, Sie können Einzelvererbung oder Mehrfachvererbung haben
3 Die verkörperten Konzepte sind unterschiedlich

Was ist in definiert Abstrakte Klassen sind gemeinsame Inhalte in einem Vererbungssystem.
Schnittstellen sind eine Sammlung von Funktionen, zusätzlichen Funktionen eines Systems und offengelegten Regeln.


Alles wird überall dort verwendet, wo die übergeordnete Klasse/Schnittstelle verweist, ihre Unterklasse /implementation-Klassenobjekt kann übergeben werden in

Polymorphismus
Dasselbe Objekt kann zu unterschiedlichen Zeiten reflektiert werden. Verschiedene Zustände
Beispiel: Wasser (Wasser, Eis, Wasserdampf)
Katze (Katze, Tier)
Voraussetzung:
A: Es besteht eine Vererbungs- oder Implementierungsbeziehung
B: Es gibt Methoden Umschreiben
C: Eine Referenz aus der übergeordneten Klasse zeigt auf das Unterklassenobjekt
Merkmale der Verwendung von Mitgliedern im Polymorphismus
Fu fz=new Zi();
Wenn polymorph, sind alle Ausdrücke die übergeordnete Klasse. Die Ausdrucksform
ist nur vorhanden, wenn eine Methode aufgerufen wird , die von der Unterklasse neu geschriebene Methode wird ausgeführt
1. Mitgliedsvariablen
Kompilieren und links sehen Links und laufen. Schauen Sie nach rechts

 1         class Fu{ 2             int num=4; 3             void show(){ 4                 system.out.println("showFu") 5             } 6  7         } 8         class Zi extends Fu{ 9 10             int num=5;11             void show(){12                 system.out.println("showZi");13             }14         }15         class T{16             public static void main(String args[]){17                 Fu f=new Zi();18                 system.out.println(f.num);19                 f.show();20             }21         }

Transformation im Polymorphismus

1. Aufwärtstransformation Weisen Sie die zu Unterklassenobjekt auf Die Referenz der übergeordneten Klasse (Schnittstelle) wird automatisch zum Typ heraufgestuft
int a=0; double b=a;
Fu fz=new Zi();
2. Downcast
zu Die Referenz der übergeordneten Klasse (Schnittstelle) wird in ein Unterklassenobjekt umgewandelt
double b=10.0;
int a=(int)b;

Fu fz=new Zi();
Zi zi=(Zi )fz;
Hinweis: Fu fu=new Fu() kann nicht abwärts konvertiert werden und meldet eine ClassCastException-Typkonvertierungsausnahme

Vor- und Nachteile von Polymorphismus

1. Vorteile Verbessert die Wartbarkeit und Skalierbarkeit des Programms
2. Nachteile
Unterklassenspezifischer Inhalt kann nicht angewendet werden
Wenn Sie ihn verwenden möchten, müssen Sie das Unterklassenobjekt entweder herabsetzen oder neu erstellen

Drei Formen des Polymorphismus
1. Polymorphismus der konkreten Klasse, Name der Variablen der übergeordneten Klasse = neue Unterklasse () 2. Polymorphismus der abstrakten Klasse, Name der übergeordneten Variablen der abstrakten Klasse = neue Unterklasse ()
3. Schnittstellenpolymorphismus Schnittstellenvariablenname = neue Implementierungsklasse ()


Instanz des Schlüsselworts
Format: Objektname, Instanz des Klassennamens Rückgabewert: wahr, falsch
Funktion : Bestimmen Sie, ob das angegebene Objekt ein von einer bestimmten Klasse erstelltes Objekt ist

Animal a1=new Cat();
Animal a2=new Dog();
method(a1)
public static void method(Animal a){

if(a instanceof Cat){

Downcast

Cat-spezifische Methode aufrufen
}
}

Das obige ist der detaillierte Inhalt vonObjektorientiert (Schnittstelle, Polymorphismus). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn