日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP中abstract(抽象)、final(最終)和static(靜態)原理與用法詳解

瀏覽:263日期:2022-09-10 08:16:53

本文實例講述了PHP中abstract(抽象)、final(最終)和static(靜態)原理與用法。分享給大家供大家參考,具體如下:

abstract(抽象)

PHP 5 支持抽象類和抽象方法。定義為抽象的類不能被實例化。任何一個類,如果它里面至少有一個方法是被聲明為抽象的,那么這個類就必須被聲明為抽象的。被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現

繼承一個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬松)。例如某個抽象方法被聲明為受保護的,那么子類中實現的方法就應該聲明為受保護的或者公有的(嚴格程度:private>protected>public),而不能定義為私有的。此外方法的調用方式必須匹配,即類型和所需參數數量必須一致。例如,子類定義了一個可選參數,而父類抽象方法的聲明里沒有,則兩者的聲明并無沖突。 這也適用于 PHP 5.4 起的構造函數。在 PHP 5.4 之前的構造函數聲明可以不一樣的。

總結:

抽象類不能被實例化; 類中有任何抽象方法那這個類也必須為抽象的; 抽象類只能申明調用方式和參數,不能定義具體功能實現; 繼承抽象類的子類必須實現抽象類的所有抽象方法; 子類中實現的抽象方法的訪問控制必須比父類的訪問控制更嚴格; 子類中實現的方法的調用方式及參數數量必須與被實現的方法一致。

例:

<?phpabstract class AbstractClass{ // 強制要求子類定義這些方法,不定義功能實現 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法),子類可以不重寫 public function printOut() { print $this->getValue() . 'n'; }}class ConcreteClass1 extends AbstractClass{ protected function getValue() { return 'ConcreteClass1'; } public function prefixValue($prefix) { return '{$prefix}ConcreteClass1'; }}class ConcreteClass2 extends AbstractClass{ //訪問方式可以更寬松 public function getValue() { return 'ConcreteClass2'; } public function prefixValue($prefix) { return '{$prefix}ConcreteClass2'; }}$class1 = new ConcreteClass1;$class1->printOut();echo $class1->prefixValue(’FOO_’) .'n';$class2 = new ConcreteClass2;$class2->printOut();echo $class2->prefixValue(’FOO_’) .'n';?>

<?phpabstract class AbstractClass{ // 我們的抽象方法僅需要定義需要的參數 abstract protected function prefixName($name);}class ConcreteClass extends AbstractClass{ // 我們的子類可以定義父類簽名中不存在的 可選參數 public function prefixName($name, $separator = '.') { if ($name == 'Pacman') { $prefix = 'Mr'; } elseif ($name == 'Pacwoman') { $prefix = 'Mrs'; } else { $prefix = ''; } return '{$prefix}{$separator} {$name}'; }}$class = new ConcreteClass;echo $class->prefixName('Pacman'), 'n';echo $class->prefixName('Pacwoman'), 'n';?>final

如果父類中的方法被聲明為 final,則子類無法覆蓋該方法。如果一個類被聲明為 final,則不能被繼承。

這個比較好理解,不做贅述

static

聲明類屬性或方法為靜態,就可以不實例化類而直接訪問。靜態屬性不能通過一個類已實例化的對象來訪問(但靜態方法可以)。

為了兼容 PHP 4,如果沒有指定訪問控制,屬性和方法默認為公有。

由于靜態方法不需要通過對象即可調用,所以偽變量 $this 在靜態方法中不可用。

靜態屬性不可以由對象通過 -> 操作符來訪問。

用靜態方式調用一個非靜態方法會導致一個 E_STRICT 級別的錯誤。

就像其它所有的 PHP 靜態變量一樣,靜態屬性只能被初始化為文字或常量,不能使用表達式。所以可以把靜態屬性初始化為整數或數組,但不能初始化為另一個變量或函數返回值,也不能指向一個對象。

自 PHP 5.3.0 起,可以用一個變量來動態調用類。但該變量的值不能為關鍵字 self,parent 或 static。

總結:

靜態方法無需實例化,可直接訪問; 類實例化的對象無法訪問類中的靜態屬性,但是可以訪問靜態方法; 偽變量 $this 在靜態方法中不可用; 靜態屬性不可以由對象通過 -> 操作符來訪問; 用靜態方式調用一個非靜態方法會導致一個 E_STRICT 級別的錯誤; 靜態屬性只能被初始化為文字或常量,不能使用表達式(函數返回值/寧一個變量/對象); 可以用一個變量來動態調用類。但該變量的值不能為關鍵字 self,parent 或 static。

<?phpclass Foo{ public static $my_static = ’foo’; public function staticValue() { return self::$my_static; }}class Bar extends Foo{ public function fooStatic() { return parent::$my_static; }}print Foo::$my_static . 'n';$foo = new Foo();print $foo->staticValue() . 'n';print $foo->my_static . 'n'; // Undefined 'Property' my_static print $foo::$my_static . 'n';$classname = ’Foo’;print $classname::$my_static . 'n'; // As of PHP 5.3.0print Bar::$my_static . 'n';$bar = new Bar();print $bar->fooStatic() . 'n';?> </programlisting> </example> <example> <title>靜態方法示例</title> <programlisting role='php'><![CDATA[<?phpclass Foo { public static function aStaticMethod() { // ... }}Foo::aStaticMethod();$classname = ’Foo’;$classname::aStaticMethod(); // 自 PHP 5.3.0 起?>

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲成人不卡| 日韩一区二区三区在线看| 欧美一区激情| 日欧美一区二区| 午夜电影一区| 天堂久久一区| 色狠狠一区二区三区| 亚洲人成毛片在线播放女女| 综合国产精品| 日韩免费精品| 欧美亚洲专区| 国产精品日韩精品中文字幕| 国产精品久久久久久久久久白浆| 麻豆久久久久久| 国产网站在线| 日本欧美不卡| 国产免费成人| 日日摸夜夜添夜夜添国产精品| 日韩精品欧美精品| 国产精品一卡| 国产精品久久久久久久免费观看| 在线人成日本视频| 999国产精品| 亚洲欧美久久| 日韩精品免费视频人成| 国产欧美日韩| 日本久久黄色| 91成人精品视频| 在线视频亚洲欧美中文| 欧美日韩夜夜| 日本不良网站在线观看| 黄色精品网站| 91麻豆精品激情在线观看最新| 久久影院一区二区三区| 日韩中文视频| 天堂精品久久久久| 久久不见久久见免费视频7| 成人福利av| 男女男精品网站| 国产视频一区二| 精精国产xxxx视频在线野外| 亚洲深爱激情| 国产欧美日韩在线一区二区| 欧洲亚洲一区二区三区| 中文字幕一区二区三区日韩精品 | 欧美a在线观看| 久久视频一区| 亚洲欧洲国产精品一区| 久久中文欧美| 中文一区二区| 欧美影院精品| 日韩欧美一区二区三区在线观看| 免播放器亚洲| 美女毛片一区二区三区四区最新中文字幕亚洲 | 天堂а√在线最新版中文在线| 黄色在线一区| 久久不见久久见免费视频7 | 久久字幕精品一区| 成人羞羞视频播放网站| 日韩毛片网站| 久久精品青草| 国产精品亚洲四区在线观看| 国产精品99一区二区| 日本成人在线视频网站| 精品免费av在线| 91精品视频一区二区| 久久久精品日韩| 欧美片网站免费| 欧美日韩视频| 久久精品国产99国产| 久热精品在线| 激情黄产视频在线免费观看| 日韩欧美久久| 三上悠亚国产精品一区二区三区| 日韩在线黄色| 亚洲精品91| 在线人成日本视频| 91麻豆精品| 美日韩精品视频| 久久久噜噜噜| 国产精品男女| 蜜桃av一区二区在线观看| 成人亚洲欧美| 国产精品伦一区二区| 三级一区在线视频先锋| 久久久久91| 国产精品99一区二区三| 日韩av影院| 在线亚洲精品| 日韩一区二区在线免费| 麻豆精品视频在线观看| 日本综合精品一区| 亚洲综合二区| 婷婷激情综合| 久久久久久久久久久妇女| 精品视频网站| 国产精品一区二区精品视频观看| 亚洲精品观看| 亚洲综合三区| 蜜桃成人av| 久久精品国产68国产精品亚洲| 精品伊人久久久| 国产伦精品一区二区三区千人斩| 美女久久一区| 一区久久精品| 久久国产亚洲| 五月激情久久| 日韩中文欧美| 中文字幕在线官网| 日产精品一区二区| 久久精品国产99国产精品| 国产精品亚洲欧美日韩一区在线| 中文字幕一区二区av| 亚洲一区二区av| 日韩精品一二三四| 另类亚洲自拍| 视频一区欧美日韩| 老色鬼久久亚洲一区二区| 欧美中文一区二区| 香蕉视频亚洲一级| 日韩在线高清| 四虎影视精品| 精品在线99| 激情欧美日韩一区| 99久久精品费精品国产| 欧美不卡高清一区二区三区| 色婷婷久久久| 婷婷成人在线| 激情欧美日韩一区| 最新日韩av| 欧美中文日韩| 亚洲一区二区小说| 日韩成人在线看| 亚洲2区在线| 91成人在线精品视频| 久久国产尿小便嘘嘘| 久久国产婷婷国产香蕉| 嫩呦国产一区二区三区av| 岛国精品一区| 日韩欧美1区| 欧美日韩一区二区综合| 日韩视频二区| 亚洲精品美女| 国产精品视频3p| 91欧美国产| 91精品观看| 综合激情五月婷婷| 国产日韩一区二区三区在线| 久久精品五月| 日韩精品水蜜桃| 日韩视频一区| 日本v片在线高清不卡在线观看| 欧美精品国产一区| 国产不卡精品在线| 免费久久久久久久久| 在线看片日韩| 麻豆精品久久| 久久伦理在线| 综合一区二区三区| 精品一区二区三区在线观看视频| 日韩一区电影| 中文字幕av一区二区三区四区| 国产精品一站二站| 国产一区二区三区亚洲综合| 久久一区二区三区电影| 亚洲一区二区三区在线免费| 久久国产生活片100| 欧美好骚综合网| 日韩午夜黄色| 69堂精品视频在线播放| 色婷婷色综合| 最新国产拍偷乱拍精品| 国产亚洲精aa在线看| 久久久一本精品| 亚洲精品一级| 97精品视频在线看| 老司机精品久久| 久久av导航| 1000部精品久久久久久久久| 亚洲2区在线| 免费福利视频一区二区三区| 蜜臀av在线播放一区二区三区| 精品久久久网| 蜜臀av性久久久久蜜臀aⅴ流畅| 麻豆一区二区三| 亚洲一区二区三区高清| 久久99久久久精品欧美| 欧美va天堂| 麻豆精品新av中文字幕| 黄色av日韩| 久久久久黄色| 夜夜精品视频| 精品国产美女a久久9999| 国产亚洲一级| 国产精品流白浆在线观看| 国产一级久久| 国产91在线精品| 亚洲麻豆一区| 久久中文字幕av一区二区不卡| 国产毛片一区二区三区|