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

PHP面向對象精要

編輯:PHP基礎知識
 

1 使用extends實現繼承以及重載、魔術方法的含義

class B extends A

聲明的時候B裡可以沒有A裡的方法

調用的時候$b=new B();

$b->A裡的方法();

$b->A裡的屬性=1;

$b->B裡的方法();

$b->B裡的方法();

如果$a=new A();

可以

$a->A裡的方法();

$a->A裡的屬性=1;

不可以

$a->B裡的方法();

$a->B裡的方法();

 

重載:B繼承A ,B裡實現和A同名的方法屬性。

PHP中的"重載"與其它絕大多數面向對象語言不同。傳統的"重載"是用於提供多個同名的 類方法,但各方法的參數類型和個數不同。

 

魔術方法:PHP把所有以__(兩個下劃線)開頭的類方法當成魔術方法。所以你定義自己的類方法時,不要以 __為前綴。

 

 

2 繼承用private和protected訪問修飾符可見性

屬性方法private不可以被繼承

屬性方法protected類外部不可見,可以被繼承

 屬性方法public 所定義的類成員可以在任何地方被訪問

 

3 php中雙冒號::的應用

php類代碼中常看到"::"的操作符,這個是作用域限定操作符,是用一個雙冒號"::"表示,它用來置頂類中不同作用域的級別。左邊是作用域右邊是訪問作用域的成員。

在php中定義的作用域有self和parent兩種(在php6中提供了static作用域)。

 

范圍解析操作符(也可稱作 Paamayim Nekudotayim)或者更簡單地說是一對冒號,可以用於訪問靜態成員、方法和常量,還可以用於子類覆蓋父類中的成員和方法。

class MyClass {
    const CONST_VALUE = 'A constant value';
}

echo MyClass::CONST_VALUE;

class OtherClass extends MyClass
{
    public static $my_static = 'static var';

    public static function doubleColon() {
        echo parent::CONST_VALUE . "\n";
        echo self::$my_static . "\n";
    }
}

OtherClass::doubleColon();

//子類覆蓋父類

class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // 覆蓋父類中的方法
    public function myFunc()
    {
        // 但仍然可以調用已被覆蓋的方法
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();

4 php中this和self以及parent的作用

this:就是指向當前對象實例的指針,不指向任何其他對象或類。

self:表示當前類的作用域,與this不同的是它不表示類的某個特定實例,在類之外的代碼中不能使用self,而且它不能識別自己在繼承中層次的位置。也就是說,當在擴展類中使用self時,它調用的不是父類的方法,而是擴展類的重載的方法。self是指向類本身,也就是self是不指向任何已經實例化的對象,一般self使用來指向類中的靜態變量。

private static $firstCount = 0;
        private $lastCount;

        //構造函數
         function __construct()
         {
             $this->lastCount = ++self:$firstCount; //使用self來調用靜態變量,使用self調用必須使用::(域運算符號)
        }
 

parent:表示當前類父類的作用域,其余的跟self特性一樣。parent是指向父類的指針,一般我們使用parent來調用父類的構造函數。

//繼承類的構造函數
     function __construct( $personSex, $personAge )
   {
         parent::__construct( "test" ); //使用parent調用了父類的構造函數
         $this->personSex = $personSex;
          $this->personAge = $personAge;
   }  

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