Heim > Java > javaLernprogramm > Hauptteil

Detaillierte Erklärung abstrakter Klasseninstanzen in Java

零下一度
Freigeben: 2017-07-26 17:37:35
Original
2101 Leute haben es durchsucht

Abstrakte Klasse:

1. Die Klasse selbst muss als abstrakt deklariert werden.

2. Abstrakte Klassen können neben abstrakten Methoden auch konkrete Daten und spezifische Methoden enthalten

3. Zwei Möglichkeiten zur Erweiterung abstrakter Klassen (die spezifische Implementierung abstrakter Methoden erfolgt in Unterklassen):

A. Wenn eine abstrakte Klasse einige abstrakte Klassen definiert oder keine abstrakten Klassenmethoden definiert, muss die Unterklasse auch als abstrakte Klasse markiert werden.

B. Definieren Sie alle abstrakten Methoden, sodass die Unterklasse nicht abstrakt ist

4. Sie kann nicht direkt instanziiert werden, kann aber indirekt verwendet werden

5. Wenn eine Klasse To Wenn Sie eine abstrakte Klasse erben möchten, müssen Sie die in der abstrakten Klasse deklarierte abstrakte Methode implementieren.

Wenn nicht, müssen Sie sich selbst als abstrakte Klasse deklarieren (dies kann eine Frage sein)

Lassen Sie uns über die neuen Funktionen von Schnittstellen in JDK8 sprechen:

Schnittstellen können nicht mehr nur abstrakte Methoden verwenden, Sie können spezifische Methoden hinzufügen, die statisch oder nicht sein können -static Ja, das Schlüsselwort defualt muss vor nicht statischen Methoden verwendet werden.

Statische Methoden können nur von Sockets referenziert werden, und nicht statische Methoden können nur von Objekten referenziert werden, die von der Implementierungsklasse instanziiert werden. Wenn daher die statischen Methodennamen zweier Schnittstellen gleich sind, gibt es kein Problem und sie können nur über den Klassennamen der Schnittstelle referenziert werden. Bei nicht statischen Methoden treten Probleme auf, da das Objekt nicht weiß, welche Schnittstellenmethode es verwenden soll, was zu Kompilierungsfehlern führt.

Das Folgende ist eine Codedemonstration

package 面向对象;//JDK8的接口新特性。interface A
    {public abstract void hehe();//传统抽象方法public static void haha()//静态方法        {
            System.out.println("haha");
        }public default void lala()
        {
            System.out.println("lala");//非静态要加关键字default        }
    }public class Test implements A
{public static void main(String[] args)//因为不是抽象的所以可以重写也可以直接使用。    {
        A.haha();//不能被Test调用new Test().lala();//非静态要创建实例使用    }
    
}
Nach dem Login kopieren

Der Zauber liegt darin sind abstrakte Methoden Ja, die Unterklasse überschreibt die abstrakte Methode nicht und die virtuelle Maschine meldet keinen Fehler, was darauf hinweist, dass die Schnittstelle die abstrakte Standardmethode nicht schreiben muss.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung abstrakter Klasseninstanzen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage