Der Unterschied zwischen Schnittstelle und abstrakter Klasse
Es gibt einen großen Unterschied zwischen Schnittstelle und abstrakter Klasse, und ihre Wahl spiegelt sogar Ob wider Das Verständnis der Art des Problembereichs und der Entwurfsabsicht ist korrekt und angemessen.
|
Abstract class |
Interface |
实例化 |
不能 |
不能 |
类 |
一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承 |
一个类可以实现多个interface |
数据成员 |
可有自己的 |
静态的不能被修改即必须是static final,一般不在此定义 |
方法 |
可以私有的,非abstract方法,必须实现 |
不可有私有的,默认是public,abstract 类型 |
变量 |
可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值 |
不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。 |
设计理念 |
表示的是“is-a”关系 |
表示的是“like-a”关系 |
实现 |
需要继承,要用extends |
要用implements |
|
Abstrakte Klasse |
Schnittstelle |
Instantiierung |
Kann nicht |
Kann nicht |
Klasse |
Eine Vererbungsbeziehung Eine Klasse kann die Vererbungsbeziehung nur einmal verwenden. Mehrfachvererbung kann durch die Vererbung mehrerer Schnittstellen erreicht werden |
Eine Klasse kann mehrere Schnittstellen implementieren |
Datenelemente
|
können eine eigene |
Statik haben, die nicht geändert werden kann und statisch endgültig sein muss , im Allgemeinen hier nicht definiert |
Methode |
Can privat sein, nicht abstrakte Methode, muss |
implementieren, darf nicht privat sein, Standard ist öffentlich, abstrakter Typ |
Variable |
kann privat sein, der Standardwert ist ein benutzerfreundlicher Typ, sein Wert kann in Unterklassen oder Neuzuweisung neu definiert werden |
kann nicht privat sein. Der Standardwert ist der öffentliche statische Endtyp, und sein Anfangswert muss in der Implementierungsklasse angegeben werden, und sein Wert kann nicht geändert werden. |
Designkonzept |
bedeutet „ist -a“. "Beziehung |
stellt die „like-a“-Beziehung dar |
Zu implementieren |
erfordert Vererbung, Sie müssen Extends verwenden |
Sie müssen Implements verwenden |
1. Ähnlichkeiten
A. Beide sind abstrakte Klassen und können nicht instanziiert werden. B. Sowohl Schnittstellenimplementierungsklassen als auch abstrakte Klassenunterklassen müssen die deklarierten abstrakten Methoden implementieren. Empfohlenes Lernen: Java-Tutorial2. UnterschiedeDie Schnittstelle muss implementiert werden und implementiert werden Die abstrakte Klasse muss vererbt werden und verwendet Extends. B. Eine Klasse kann mehrere Schnittstellen implementieren, aber eine Klasse kann nur eine abstrakte Klasse erben. Die C-Schnittstelle legt den Schwerpunkt auf die Implementierung spezifischer Funktionen, während die abstrakte Klasse die Eigentumsbeziehung betont. D. Obwohl sowohl die Schnittstellenimplementierungsklasse als auch die Unterklassen der abstrakten Klasse die entsprechende abstrakte Methode implementieren müssen, sind die Implementierungsformen unterschiedlich. Jede Methode in der Schnittstelle ist eine abstrakte Methode, die nur deklariert wird (Deklaration, ohne Methodenkörper) und von der Implementierungsklasse implementiert werden muss. Unterklassen einer abstrakten Klasse können selektiv implementiert werden. 3. Anwendungsfälle der Schnittstelle A. Klassen benötigen spezifische Schnittstellen zur Koordination, unabhängig davon, wie sie implementiert sind. B. Es existiert als Bezeichner, der eine bestimmte Funktion implementieren kann, oder es kann ein reiner Bezeichner ohne Schnittstellenmethoden sein. C. Eine Gruppe von Klassen muss als eine einzelne Klasse behandelt werden und der Anrufer kontaktiert diese Gruppe von Klassen nur über die Schnittstelle. D. Es müssen mehrere bestimmte Funktionen implementiert werden, und diese Funktionen haben möglicherweise überhaupt keine Verbindung. 4. Anwendungsfälle der abstrakten Klasse Kurz gesagt, wenn sowohl eine einheitliche Schnittstelle als auch Instanzvariablen oder Standardmethoden benötigt werden, dann Kann es verwendet werden. Die gebräuchlichsten sind: A. Definiert eine Reihe von Schnittstellen, möchte jedoch nicht jede Implementierungsklasse dazu zwingen, alle Schnittstellen zu implementieren. Sie können eine abstrakte Klasse verwenden, um eine Reihe von Methodenkörpern oder sogar leere Methodenkörper zu definieren, und dann Unterklassen die Methoden auswählen lassen, die sie abdecken möchten. B. In einigen Fällen können reine Schnittstellen die Koordination zwischen Klassen auch nicht erfüllen. Zur Unterscheidung verschiedener Beziehungen werden auch Variablen benötigt. Die Vermittlerrolle des Abstrakten kann dies sehr gut erfüllen. C. Standardisiert eine Reihe gegenseitig koordinierter Methoden, von denen einige gemeinsam und zustandsunabhängig sind und gemeinsam genutzt werden können, ohne dass Unterklassen sie separat implementieren müssen, während andere Methoden erfordern, dass jede Unterklasse sie entsprechend implementiert zu seinem eigenen Ein bestimmter Zustand, um eine bestimmte Funktion zu erreichen. Weitere Programmier-Tutorials finden Sie weiterhin auf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Schnittstelle und abstrakter Klasse. 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