php 類 方法關鍵字

2021-07-10 15:42:41 字數 3697 閱讀 2962

1、final

如果我們不希望乙個類被繼承,我們使用final來修飾這個類。這個類將無法被繼承。

final---用於類、方法前。 

final類---不可被繼承。 

final方法---不可被覆蓋。 

2、public 表示全域性,類內部外部子類都可以訪問;private表示私有的,只有本類內部可以使用;protected表示受保護的,只有本類或子類或父類中可以訪問;

3、this是指向當前物件的指標(可以看成c裡面的指標),self是指向當前類的指標,parent是指向父類的指標

self:當變數,方法設定為static時,在本類中呼叫用self

4、static

宣告類成員或方法為 static ,就可以不例項化類而直接訪問,不能通過乙個物件來訪問其中的靜態成員(靜態方法除外)。靜態成員屬於類,不屬於任何物件例項,但類的物件例項都能共享。

然後我們再看一下使用$object->… 和使用class::… 都有什麼區別: 

1. 使用$object->… ,需要執行建構函式建立物件; 

2. 使用class::… 呼叫靜態方法/變數,不需要執行建構函式建立物件; 

3. 使用class::… 呼叫非靜態方法/變數,也不需要執行建構函式建立物件。

5、abstract 抽象

一、 抽象類abstract class

1 .抽象類是指在 class 前加了 abstract 關鍵字且存在抽象方法(在類方法 function 關鍵字前加了 abstract 關鍵字)的類。

2 .抽象類不能被直接例項化。抽象類中只定義(或部分實現)子類需要的方法。子類可以通過繼承抽象類並通過實現抽象類中的所有抽象方法,使抽象類具體化。

3 .如果子類需要例項化,前提是它實現了抽象類中的所有抽象方法。如果子類沒有全部實現抽象類中的所有抽象方法,那麼該子類也是乙個抽象類,必須在 class 前面加上 abstract 關鍵字,並且不能被例項化。

6、inte***ce 介面

1 .抽象類提供了具體實現的標準,而介面則是純粹的模版。介面只定義功能,而不包含實現的內容。介面用關鍵字 inte***ce 來宣告。

2 . inte***ce 是完全抽象的,只能宣告方法,而且只能宣告 public 的方法,不能宣告 private 及 protected 的方法,不能定義方法體,也不能宣告例項變數 。然而, inte***ce 卻可以宣告常量變數 。但將常量變數放在 inte***ce 中違背了其作為介面的作用而存在的宗旨,也混淆了 inte***ce 與類的不同價值。如果的確需要,可以將其放在相應的 abstract class 或 class 中。

7、instanceof

php5的另乙個新成員是instdnceof關鍵字。使用這個關鍵字可以確定乙個物件是類的例項、類的子類,還是實現了某個特定介面,並進行相應的操作。在某些情況下,我們希望確定某個類是否特定的型別,或者是否實現了特定的介面。instanceof操作符非常適合完成這個任務。instanceof操作符檢查三件事情:例項是否某個特定的型別,例項是否從某個特定的型別繼承,例項或者他的任何祖先類是否實現了特定的介面。例如,假設希望了解名為manager的物件是否為類employee的例項:

$manager = new employee();

if ($manager instanceof employee)

echo "yes";

有兩點值得注意。首先,類名沒有任何定界符(引號)。使用定界符將導致語法錯誤。其次,如果比較失敗,指令碼將退出執行。instanceof關鍵字在同時處理多個物件時特別有用。例如,你可能要重複地呼叫某個函式,但希望根據物件型別調整函式的行為。可以使用case語句和instanceof關鍵字來實現這個目標。

class test{}

class test{}

class testchilern extends test{}

$a = new test();

$m = new test();

$i = ($m instanceof test);

if($i)

echo '$m是類test的例項!

'; // get this value

switch ($a instanceof test)

$d=new testchilern();

if($d instanceof test)echo '$d是類test的子類!

'; // get this value

php中 instanceof有什麼作用

作用:(1)判斷乙個物件是否是某個類的例項,(2)判斷乙個物件是否實現了某個介面。

第一種用法:

<?php

$obj = new a();

if ($obj instanceof a)

第二種用法:

<?php

inte***ce exampleinte***ce

class exampleclass implements exampleinte***ce

}$exampleinstance = new exampleclass();

if($exampleinstance instanceof exampleinte***ce)else 

?>

輸出結果:yes, it is

另外,需注意 instanceof 與 is_subclass_of() 的區別,請看**:

<?php

class foo

}class bar extends foo

$a = new foo();

$b = new bar();

echo "use of test() method\n";

$a->test();

$b->test();

echo "instanceof foo\n";

var_dump($a instanceof foo); // true

var_dump($b instanceof foo); // true

echo "instanceof bar\n";

var_dump($a instanceof bar); // false

var_dump($b instanceof bar); // true

echo "subclass of foo\n";

var_dump(is_subclass_of($a, 'foo')); // false

var_dump(is_subclass_of($b, 'foo')); // true

echo "subclass of bar\n";

var_dump(is_subclass_of($a, 'bar')); // false

var_dump(is_subclass_of($b, 'bar')); // false

?>

輸出結果(php 5.4.4):

use of test() method

foobar

instanceof foo

bool(true)

bool(true)

instanceof bar

bool(false)

bool(true)

subclass of foo

bool(false)

bool(true)

subclass of bar

bool(false)

關鍵字 php提取關鍵字中文分詞

每日17點準時技術乾貨分享 需求 做seo的keywords時,需要從標題或者正文裡提取關鍵字 2.封裝 loaddict pa setsource content pa startanalysis true tags pa getfinallykeywords num 獲取文章中的n個關鍵字 re...

PHP抽象類abstract關鍵字

用abstract定義的類不能被例項化。有乙個函式為abstract的類,這個類就必須是abstract,子類必須 定義所有的父類中的abstract函式,子類中函式的作用域只能被擴大,不能縮小。abstract class abstractclass class concreteclass1 ex...

base 關鍵字 類

通過base 關鍵字訪問基類的成員 呼叫基類上已被其他方法重寫的方法。指定建立派生類例項時應呼叫的基類建構函式。基類訪問只能在建構函式 例項方法或例項屬性訪問器中進行。從靜態方法中使用 base 關鍵字是錯誤的。例項 using system public class parent string p...