2014年10月1日 星期三

【筆記】繼承

繼承分為單一繼承和多重繼承

單繼承: 一個兒子只能有一個爸爸,如果為多個爸爸就用介面,乾爹
多繼承: 一個兒子可以有多個爸爸

注意:
一個父類別有多個子類別不叫做多重繼承
一個子類別又有子類別也不叫多重繼承

權限
修飾字
含義
說明
高到低
public
公開
任何地方都可以訪問
protected
受保護
該類及子類別可訪
private
私有
該類可訪



1.  class 子類別  extends 父類別
class People{

  function msg(){

   return "hello";

  }

 }
class Say extends People{
  function info(){
   return "welcome";
  }
 }

$test1 = new Say();

 echo $test1->msg()."<br />";

 echo $test1->info();
2.  如果子類別想做一些變更 : 重寫
     php 比起Java 少了很多規範

class People{

  function msg(){

   echo "父類別";

  }

 }

class Say extends People{

  function msg(){

   echo "子類別";

  }

 }

 $test1 = new Say();

 echo $test1->msg();
3.  如果子類別需要用到父類別的函數
class People{

  function msg(){

   echo "父類別";

  }
 }
class Say extends People{

  function msg(){

   parent::msg();

   echo "子類別";

  }

 }

 $test1 = new Say();

 echo $test1->msg();
4. final的方法不能被重寫
    以下會跑出錯誤  PHP Fatal error:  Cannot override final method  People::msg()...

class People{

  final function msg(){

   echo "父類別";

  }

 }
class Say extends People{

  function msg(){

   echo "子類別";

  }

 }

 $test1 = new Say();

 echo $test1->msg();
5. 子類別的權限一定比父類別高
    以下會跑出錯誤   PHP Fatal error:  Access level to Say::msg() must be public (as in class People)

class People{

  public function msg(){

   echo "父類別";

  }

 }
class Say extends People{

  private function msg(){

   echo "子類別";

  }

 }

 $test1 = new Say();

 echo $test1->msg();

沒有留言:

張貼留言