Die Rolle der Klasse
1 Instanziieren des Objekts
2 Als Basisklasse anderer Klassen wird sie vererbt!
3 Rufen Sie seine statischen Mitglieder auf
Zwei Hauptfunktionen: Objekte instanziieren und vererben.
Es gibt zwei spezielle Klassen mit einer einzigen Funktion!
1, ** kann nur Objekte instanziieren und kann nicht vererbt werden. **Endgültige Klasse
2, kann nur vererbt werden und kann keine Objekte instanziieren. Die abstrakte Klasse
finale Klasse und finale Methode
finale Klasse ist das letzte Glied in der Vererbungskette. Sie kann keine Unterklassen haben
final class End{ } class Test extends End{ }
运行结果:报错 PHP Fatal error: Class Test may not inherit from final class (End) in /usercode/file.php on line 7
finale Methoden können nicht sein Unterklassen. Klassenumschreibung
<?php class AmParent{ final public function end_func(){ echo '我是final方法'; } } class AmChild extends AmParent{ public function end_func(){ echo '我是子类,我想重写final方法,可是报错了'; } }
运行结果:报错 PHP Fatal error: Cannot override final method AmParentt::end_func() in /usercode/file.php on line 11
Abstrakte Klasse, abstrakte Klasse
hat eine Sache mehr als reguläre Klassen (Klassenkonstanten, statische Eigenschaften, statische Methoden, nicht statische Eigenschaften, nicht statische Methoden). )—— Abstrakte Methoden erfordern nicht abstrakte Unterklassen, um abstrakte Methoden zu implementieren.
Abstrakte Methode: Ohne {} spricht man von einer reinen Methodendeklaration. Kann Parameter haben.
abstract public function abstract_func($arg1,$arg2)
//不能实例化对象 <?php abstract class AmParent{ abstract public function abstract_func($arg1,$arg2); } $amParent=new AmParent;
运行结果: PHP Fatal error: Cannot instantiate abstract class AmParent in /usercode/file.php on line 5
kann nur vererbt werden:
1. Die Unterklasse ist keine abstrakte Klasse. Alle abstrakten Methoden der übergeordneten Klasse müssen implementiert werden (plus Methodenkörper {}).
<?php abstract class AmParent{ abstract public function abstract_func($arg1,$arg2); } class AmChild extends AmParent{ }
运行结果,报错: PHP Fatal error: Class AmChild contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (AmParent::abstract_func) in /usercode/file.php on line 6
<?php abstract class AmParent{ abstract public function abstract_func($arg1,$arg2); } abstract class AmChild extends AmParent{ }
<?php abstract class AmParent{ abstract public function abstract_func($arg1,$arg2); } class AmChild extends AmParent{ public function abstract_func($arg1,$arg2){ echo $arg1.$arg2; } } $amChild=new AmChild; $amChild->abstract_func( 'have implemented ',' abstract_func ');
运行结果,报错: have implemented abstract_func
<?php abstract class Goods{ abstract public function sayName(); } class Books extends Goods{ public function sayName(){ echo '我是一本书的名字<br/>'; } } class Mobiles extends Goods{ public function sayName(){ echo '我是一部手机的名字<br/>'; } } $book1=new Books; $book1->sayName(); $mobile1=new Mobiles; $mobile1->sayName();
运行结果: 我是一本书的名字 我是一部手机的名字
<?php interface iGoods{ const PAI=3.14; public function sayName(); public function sayPrice(); }
Eine Klasse, die eine Schnittstellenstruktur implementiert, umfasst die in der Schnittstelle definierten abstrakten Methoden.
Zwei Optionen: 1. Definieren Sie es als abstrakte Klasse. 2. Implementieren Sie die Schnittstellenmethode!
//1定义成抽象类 abstract class Books implements iGoods{ abstract public function sayName(); abstract public function sayPrice(); }
//2实现接口方法 class Books implements iGoods{ public function sayName(){ echo '我实现了接口方法'; } public function sayPrice(){ echo '我实现了接口方法'; } }
Gemeinsame Klassen erben abstrakte Klassen, und Sie können sie zuerst erhalten abstrakte Klassen
Zweitens müssen Sie abstrakte Methoden implementieren (nicht unbedingt öffentlich)
2. Es besteht eine Implementierungsbeziehung zwischen Schnittstellen und gewöhnlichen Klassen!
Wenn eine normale Klasse eine Schnittstelle implementiert, kann sie nur ihre nicht implementierten öffentlichen Methoden implementieren!
3. Schnittstellen werden nur zum Definieren öffentlicher Methoden und Konstanten verwendet! Und abstrakte Klassen können alles haben!
4. Mehrere Schnittstellenimplementierungen. Eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren
<?php interface iA{ const PAI=3.14; public function sayA(); } interface iB{ public function sayB(); } class C implements iA,iB{ public function sayA(){ } public function sayB(){ } }
//用class_exists(@param string),判断类是否存在 var_dump(class_exists('C')); var_dump(class_exists('iA'));
运行结果: bool(true) bool(false)
Das Obige ist der Inhalt der objektorientierten PHP-Syntax 5, der letzten Klasse, der abstrakten Klasse und der Schnittstellenstruktur (nicht der Klasse). PHP chinesische Website (www.php .cn)!