Heim  >  Artikel  >  Backend-Entwicklung  >  Fortgeschrittenes Lernprogramm zu abstrakten PHP-Klassen, -Schnittstellen, -Final- und -Klassenkonstanten

Fortgeschrittenes Lernprogramm zu abstrakten PHP-Klassen, -Schnittstellen, -Final- und -Klassenkonstanten

伊谢尔伦
伊谢尔伦Original
2017-06-29 09:22:481087Durchsuche

Fortgeschrittenes Lernen von PHP-Objektorientierung, hauptsächlich einschließlich einiger Informationen zu abstrakten Klassen, Schnittstellen, Finale und Klassenkonstanten

1. Abstrakte Klassen (abstrakt)
In unserem tatsächlichen Entwicklungsprozess müssen einige Klassen nicht instanziiert werden. Beispielsweise werden einige zuvor erlernte übergeordnete Klassen hauptsächlich von Unterklassen geerbt, was die Wiederverwendbarkeit des Codes verbessern kann
Grammatikstruktur:

abstract class 类名{ 
属性 $name; 
方法(){} //方法也可以为abstract 修饰符 function 方法名(){} 
}

Beispiel:

abstract class animal{ 
public $name; 
public $age; 
//抽象方法不能有方法体,主要是为了让子类去实现; 
abstract public function cry(); 
//
抽象类
中可以包含抽象方法,同时也可以包含实例类方法 
public function getname(){ 
echo $this->name; 
} 
} 
class Cat{ 
public function cry(){ 
echo 'ok'; 
} 
}

Verständnis: Die Tierklasse ist eigentlich ein abstraktes Konzept, das einige gemeinsame Eigenschaften und Verhaltensweisen einiger Tiere festlegt, aber tatsächlich besitzt sie diese Eigenschaften und Verhaltensweisen selbst nicht. Ein weiteres Beispiel: Fahrzeuge, Pflanzen usw.

Hinweis:
1. Wenn eine Klasse mit Abstract geändert wird, dann ist die Klasse eine abstrakte Klasse. Wenn eine Methode mit Abstract geändert wird, dann ist die Klasse A method ist eine abstrakte Methode. Eine abstrakte Methode kann keinen Methodenkörper haben => abstract function cry(); nicht einmal {}
2. Eine abstrakte Klasse darf keine abstrakte Methode haben, aber if Eine Klasse enthält eine beliebige abstrakte Methode und diese Klasse muss als abstrakte Klasse deklariert werden.
3 Wenn eine Klasse eine andere abstrakte Klasse erbt, muss die Unterklasse alle abstrakten Methoden in der abstrakten Klasse implementieren (es sei denn, sie selbst). abstrakte Klasse);

2. Schnittstelle (Schnittstelle)
Schnittstelle dient dazu, einige nicht implementierte Methoden zusammenzufassen. Wenn eine bestimmte Klasse verwendet wird, schreiben Sie diese Methoden entsprechend der spezifischen Situation ;
Grammatikstruktur
Schnittstelle Schnittstellenname {
//Attribute, Methoden
//Methoden in der Schnittstelle können keine Methodenkörper haben
}
So implementieren Sie die Schnittstelle
Klasse Klassenname implementiert Schnittstellennamen {

}
Verstehen: Die Schnittstelle ist eine abstraktere Klasse. Methoden in abstrakten Klassen können Methodenkörper haben, Methoden in Schnittstellen dürfen jedoch keinen Methodenkörper haben. Schnittstellen realisieren den Polymorphismus der Programmierung und die Designideen von hoher Kohäsion und geringer Kopplung.

Beispiel:

//接口是定义规范、属性的,一般以小写的i开头; 
interface iUsb{ 
public function start(); 
public function stop(); 
} 
//编写相机类,让它去实现接口 
//当一个类实现了某个接口,那么该类就必须实现接口的所有方法 
class Camera implements iUsb{ 
public function start(){ 
echo 'Camera Start Work'; 
} 
public function stop(){ 
echo 'Camera Stop Work'; 
} 
} 
//编写一个手机类 
class Phone implements iUsb{ 
public function start(){ 
echo 'Phone Satrt Work'; 
} 
public function stop(){ 
echo 'Phone Stop Work'; 
} 
} 
$c=new Camera(); 
$c->start(); 
$p=new Phone(); 
$p->start();

Wann werden Schnittstellen verwendet? implementieren
2. Wenn mehrere parallele Klassen eine bestimmte Funktion implementieren müssen, die Implementierungsmethoden jedoch unterschiedlich sind:
1 Die Schnittstelle kann nicht instanziiert werden kann keinen Körper haben;
2. Eine Klasse kann mehrere Schnittstellen implementieren, die durch Kommas (,) getrennt sind. Die Klassendemo implementiert if1,if2,if3{}
3 . Konstanten können keine Modifikatoren haben (der Standardwert ist öffentlicher Modifikator)
Zum Beispiel: interface iUsb{
const A=90; Methoden in der Schnittstelle müssen öffentlich sein, und der Standardwert ist öffentlich;
5. Eine Schnittstelle kann
andere
Schnittstellen erben als: Schnittstellenschnittstellenname
extends
if1,if2{}
6. Eine Klasse kann andere Schnittstellen erben, während sie die übergeordnete Klasse erbt
wie: Klasse test erweitert testbase implementiert test1, test2{} Implementieren von Schnittstellen vs. Erben von Klassen
PHP-Vererbung ist Einzelvererbung, das heißt, eine Klasse kann nur eine übergeordnete Klasse erben, was einen gewissen Einfluss auf die Erweiterung der Unterklassenfunktionen hat. Die Implementierung von Schnittstellen kann als Ergänzung zu geerbten Klassen betrachtet werden. Vererbung ist eine hierarchische Beziehung und nicht sehr flexibel, während die Implementierung von Schnittstellen eine horizontale Beziehung ist. Durch die Implementierung von Schnittstellen kann eine bestimmte Funktion erweitert werden, ohne die Vererbungsbeziehung zu unterbrechen, was sehr flexibel ist.
3. Endgültig

1. Wenn wir möchten, dass eine Klasse nicht von anderen Klassen geerbt wird (z. B. aus Sicherheitsgründen usw.), können wir dies tun Erwägen Sie die Verwendung von final
Syntax:
final class A{}
2. Wenn wir möchten, dass eine Methode nicht von Unterklassen überschrieben wird, können wir die Verwendung von final in Betracht ziehen, um sie zu ändern geerbt, da die Methode Vererbungsrechte von öffentlichen Änderungen abhängen wie zum Beispiel:

3. Final kann nicht zum Ändern von Attributen verwendet werden


4. Klassenkonstanten (const )

class A{ 
final public function getrate($salary){ 
return $salary*0.08; 
} 
} 
class B extens A{ 
//这里父类的getrate方法使用了final,所以这里无法再重写getrate 
//public function getrate($salary){ 
// return $salary*0.01; 
//} 
}
In einigen Fällen kann es eine solche Anforderung geben: Wenn Sie nicht möchten, dass eine Mitgliedsvariable geändert wird und Sie möchten, dass der Wert der Variablen festgelegt wird, können Sie const-Konstanten verwenden ( Konstantennamen sollten ausschließlich in Großbuchstaben geschrieben sein. Ohne das $-Symbol können Konstanten keine Modifikatoren hinzugefügt werden geänderter

Aufruf:
Klassenname ::Konstantenname [self::Konstantenname ist in dieser Klasse verfügbar] oder Schnittstellenname::Konstantenname //In der Schnittstelle können nur Konstanten verwendet werden, Variablen
nicht verwendet werden, wie zum Beispiel:
Hinweis:
1. Konstanten können von Unterklassen geerbt werden
2. Konstanten gehören zu einer bestimmten Klasse, nicht zu einem Objekt

Das obige ist der detaillierte Inhalt vonFortgeschrittenes Lernprogramm zu abstrakten PHP-Klassen, -Schnittstellen, -Final- und -Klassenkonstanten. 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