程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 類和對象

php 類和對象

編輯:關於PHP編程

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,接口的方法只有方法,沒有方法體,子類重寫接口的方法,接口的方法在子類必須都被重寫。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved