php 類和對象
物件導向,是當今編程的主流,對於研發人員,可能對物件導向,多多少少的有一些認識,但是有些不常用的或許不是特別清楚。有時也是很有用的。下面就介紹幾點知識。
一、final 關鍵字的一些知識:
1、final 關鍵字作為方法是可以被子類繼承的。如下面:
class A{ final function operation(){ echo 'a'; }}class B extends A{}$a=new B();$a->operation();
result :a
2、final 關鍵字作為類是不可以繼承的,如下:
operation();
會有如下錯誤:
( ! ) Fatal error: Class B may not inherit from final class (A) in D:\wamp\www\examble\index19.php on line 9
3、final 關鍵字作為的方法不能被子類覆蓋,也就是說子類不能有相同的方法,如下
class A{ final function operation(){ echo 'a'; }} class B extends A{ function operation(){ echo 'a'; }}$a=new B();$a->operation();
會有如下錯誤:
| ( ! ) Fatal error: Cannot override final method A::operation() in D:\wamp\www\examble\index19.php on line 12 |
二、php 多重繼承的實現,以下的例子在php 中將會有個致命的錯誤。
class A{ public function operation(){ echo 'a'; }}class C{ public function oper(){ echo 'c'; }} class B extends A{ public function operation(){ echo 'a'; }} class B extends C{ public function operati(){ echo 'd'; }}$a=new B();$a->operation();
| ( ! ) Fatal error: Cannot redeclare class B in D:\wamp\www\examble\index19.php on line 24 |
這種形式的多種繼承不被允許的。
如果非要實現多種繼承,那麼只能通過介面的方式實現呢。
interface Displayable{ public function display(); } interface B{ public function show(); } class A implements Displayable,B{ public function display(){ echo 'a'; } public function show(){ echo 'b'; } } $ab=new A(); $ab->display(); $ab->show();
注意介面的方法都是public,介面的方法只有方法,沒有方法體,子類重寫介面的方法,介面的方法在子類必須都被重寫。
http://www.bkjia.com/PHPjc/941436.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/941436.htmlTechArticlephp 類和對象 物件導向,是當今編程的主流,對於研發人員,可能對物件導向,多多少少的有一些認識,但是有些不常用的或許不是特別清...