亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

詳解php中的類與對象(繼承)

2024-05-05 00:01:23
字體:
來源:轉載
供稿:網友

簡介

在php中,類型的繼承使用extends關鍵字,而且最多只能繼承一個父類,php不支持多繼承。

class MyClass  {  public $dat = 0;  public function __construct($dat) {   $this->dat = $dat;  }  public function getDat() {   return "$this->dat/n";  } } class MySubClass extends MyClass {  public function getDat() {   return "dat: $this->dat/n";  } } $a = new MyClass(3); $b = new MySubClass(4); echo $a->getDat();  // 3 echo $b->getDat();  // dat: 4 

方法覆蓋

包括構造函數在內,子類可以重新定義同名的類方法以覆蓋父類方法。覆蓋時遵循以下規則:

1.除構造函數之外,其他函數在覆蓋時,函數的參數列表必須相同

2.包括構造函數在內,方法被覆蓋后,調用子類方法時并不會自動調用父類方法

3.如果父類要禁止方法被子類覆蓋,可以使用final來聲明方法,這時如果子類仍要覆蓋父類方法,將會出錯

class MyClass  {  private $name = "";  public $num = 0;  public $str = "";  public function __construct($name) {   $this->name = $name;   $this->num = 100;   $this->str = "none";  }  public function getName() {   return $this->name;  } } class MySubClass extends MyClass {  public function __construct($name, $str) {   parent::__construct($name);    // 調用父類方法   $this->num = "0";   $this->str = $str;   echo parent::getName()."/n";    // 調用父類方法  }  public function getName() {   return parent::getName()."$this->str/n"; // 調用父類方法  } } $b = new MySubClass("myName", true);  // myName echo $b->getName();          // myName1 class MyClass  {  final public function getName() {  } } 

屬性重定義

在子類中,可以訪問父類中的public和protected屬性成員,除非重定義了同名的自有屬性,這時,父類中的屬性將無法訪問。

方法則不同,子類對方法進行覆蓋后,仍然可以訪問到父類方法。

class MyClass  {  public $a = 1;  protected $b = 2;  private $c = 3;  public function f1() {   echo "MyClass f1/n";   echo "/$a:$this->a; /$b:$this->b; /$c:$this->c;/n";  }  protected function f2() {   echo "MyClass f2/n";   echo "/$a:$this->a; /$b:$this->b; /$c:$this->c;/n";  }  private function f3() {   echo "MyClass f3/n";  } } class MySubClass extends MyClass  {  public $b = 22;  public $c = 33;  public function f1() {   echo "MySubClass f1/n";   // 繼承到父類中的$a屬性,直接使用   echo "/$a:$this->a; /$b:$this->b; /$c:$this->c;/n";   // 調用父類中的同名方法   parent::f1();   // 繼承到父類中的f2()方法,直接使用   $this->f2();  }  // 父類的f3()是私有的,這里的定義與父類無關  public function f3() {   echo "MySubClass f3/n";  } } $b = new MySubClass; $b->f1();echo "/n"; /* MySubClass f1 $a:1; $b:22; $c:33; MyClass f1 $a:1; $b:22; $c:3; MyClass f2 $a:1; $b:22; $c:3; */ $b->f3();echo "/n"; /* MySubClass f3 */ 

重定義父類(同名)屬性時,屬性的可訪問性可以變得更開放,但不能更嚴格,也就是說,父類中的public屬性,不能在子類中修改為private屬性。

如果通過子類對象調用父類方法,那么該父類方法在訪問屬性時,對于重定義了的同名屬性,public和protected的屬性將訪問到子類版本,private屬性將訪問到父類版本。也可以理解為,public和protected屬性可以被重定義(父類的版本被重定義,從而不存在了),而private并未被重定義(父類中的屬性仍然存在,通過父類方法進行訪問,與子類中是否有同名屬性毫不相干)。

class MyClass  {  public $a = 1;  protected $b = 2;  private $c = 3;  public function f1() {   echo "/$a:$this->a; /$b:$this->b; /$c:$this->c;/n";  } } class MySubClass extends MyClass  {  public $a = 11;   // 必須為public  protected $b = 22; // 必須為protected或public  private $c = 33;    public function f2() {   echo "/$a:$this->a; /$b:$this->b; /$c:$this->c;/n";  } } $b = new MySubClass; $b->f1(); // $a:11; $b:22; $c:3; $b->f2(); // $a:11; $b:22; $c:33; 

范圍解析操作符 ::

又冒號常用于訪問類常量、類靜態變量,也用于在方法覆蓋時調用父類版本。與其搭配的還包括parent、self、static等關鍵字。

class MyClass  {  const Name0 = "MyClass";  // 類常量  public static $id0 = 0;  // 類變量  public function put() {  // 將被子類覆蓋的方法   echo "MyClass put()/n";  } } class MySubClass extends MyClass  {  const Name1 = "MySubClass";  public static $id1 = 1;   public function put() {   parent::put();        // 調用父類版本的對象方法   echo parent::Name0 . "/n";  // 父類常量   echo parent::$id0 . "/n";   // 父類變量   echo self::Name1."/n";    // 子類常量   echo self::$id1 . "/n";    // 子類變量   echo static::Name1 . "/n";  // 子類常理   echo static::$id1 . "/n";   // 子類變量  } } $a = "MyClass"; $ca = new MyClass; $cb = new MySubClass;  $cb->put(); echo MyClass::Name0 . "/n"; echo MyClass::$id0 . "/n"; echo $a::Name0 . "/n"; echo $a::$id0 . "/n"; echo $ca::Name0 . "/n"; echo $ca::$id0 . "/n"; 

在子類中訪問父類中的成員時,應避免直接使用父類類名,而應使用parent::,以免破壞父類的封裝性。

final

聲明為final的方法不能被子類覆蓋,如果類聲明為final,則此類不能被繼承。

// 聲明為final的類不能被繼承 final class MyClass {  private $dat;  public function __construct($dat) {   $this->dat = $dat;  }  // final方法不能被覆蓋,不過此類已經是final類,方法無必要在聲明為final了  final public function getDat() {   return $this->dat;  } }

總結

以上所述是小編給大家介紹的php中的類與對象(繼承),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产日韩在线| 亚洲欧美色婷婷| 亚洲精品久久久久中文字幕二区| 国精产品一区一区三区有限在线| 国产精品视频资源| 2024亚洲男人天堂| 九九精品在线观看| 韩国精品久久久999| 福利一区视频在线观看| 亚洲综合视频1区| 久久综合久久八八| 国产成一区二区| 久久久国产一区二区三区| 欧美性xxxxx极品娇小| 亚洲精品国产精品自产a区红杏吧| 91美女福利视频高清| 免费99精品国产自在在线| 欧美亚洲伦理www| 欧美日韩国产中字| 中文字幕日韩高清| 亚洲专区中文字幕| 亚洲精品国产欧美| 欧美亚洲国产精品| 亚洲桃花岛网站| 高清欧美电影在线| 日韩欧美国产一区二区| 亚洲国产精品va在线看黑人动漫| 国产日韩欧美综合| 欧美日韩国产一区二区三区| 国产一区二区三区在线观看网站| 欧美一级淫片播放口| 国产成人精品久久亚洲高清不卡| 欧美在线视频播放| 韩国美女主播一区| 久久久精品一区二区三区| 色哟哟亚洲精品一区二区| 国产裸体写真av一区二区| 欧美日韩在线看| 欧美伦理91i| 成人av番号网| 亚洲精品日韩丝袜精品| 4388成人网| 中文字幕视频在线免费欧美日韩综合在线看| 日韩精品极品视频免费观看| 国产精品免费看久久久香蕉| 欧美超级免费视 在线| 欧美一级大片视频| 久久人人爽亚洲精品天堂| 亚洲精品一区二区三区不| 国产在线一区二区三区| 国产亚洲欧美视频| 久久九九精品99国产精品| 国产午夜精品全部视频在线播放| 乱亲女秽乱长久久久| 国产日产亚洲精品| 国产91精品久久久久| 美女av一区二区| 欧美性猛交xxxx免费看漫画| 久热精品视频在线| 丝袜美腿亚洲一区二区| 亚洲人成欧美中文字幕| 亚洲午夜激情免费视频| 亚洲成色777777女色窝| 影音先锋欧美在线资源| 在线观看欧美www| 国产噜噜噜噜久久久久久久久| 欧美壮男野外gaytube| 国产精自产拍久久久久久蜜| 亚洲已满18点击进入在线看片| 欧美日韩性视频在线| 国产日韩在线免费| 4p变态网欧美系列| 国产亚洲精品美女久久久久| 成人福利视频在线观看| 另类色图亚洲色图| 夜夜嗨av色综合久久久综合网| 久久久久久久久久久人体| 欧美大人香蕉在线| 国产91在线高潮白浆在线观看| 亚洲精品成人免费| 亚洲最大福利视频网| 国产精品自拍视频| 亚洲japanese制服美女| 亚洲欧美色图片| 久久在线免费观看视频| 91在线免费网站| 亚洲三级 欧美三级| 亚洲一区二区三区视频播放| 亚洲第一黄色网| 亚洲精品综合精品自拍| 欧美在线性爱视频| 福利精品视频在线| 久久免费精品日本久久中文字幕| 欧美性猛交xxxx黑人猛交| 最近2019年中文视频免费在线观看| 色视频www在线播放国产成人| 国产成人一区二区三区电影| 国产噜噜噜噜噜久久久久久久久| 九九热这里只有精品免费看| 插插插亚洲综合网| 91久久精品视频| 久久91精品国产91久久久| 91av国产在线| 2019中文字幕在线观看| 日本一欧美一欧美一亚洲视频| 亚洲片国产一区一级在线观看| 影音先锋欧美精品| 午夜精品久久久久久久男人的天堂| 在线a欧美视频| 欧美裸身视频免费观看| 久久久精品美女| 久久精品国产欧美亚洲人人爽| 欧美激情xxxx性bbbb| 成人信息集中地欧美| 国产亚洲精品美女| 欧美一区二区三区免费观看| 欧美在线www| 欧美成人精品影院| 亚洲国产成人久久综合一区| 欧美日韩免费区域视频在线观看| 国产精品福利网| 九九精品在线视频| 亚洲综合在线中文字幕| 97在线看免费观看视频在线观看| 久久久久久久久亚洲| 成人精品视频99在线观看免费| 久久青草精品视频免费观看| www.日韩不卡电影av| 一区二区三区久久精品| 国产欧美在线观看| 一本一本久久a久久精品牛牛影视| 精品久久久一区二区| 九九热精品视频国产| 国产精品一区二区三区在线播放| 亚洲国产欧美久久| 高跟丝袜欧美一区| 亚洲国产精品999| 日本久久精品视频| 欧美国产一区二区三区| 97人人模人人爽人人喊中文字| 亚洲一区亚洲二区亚洲三区| 91系列在线观看| 欧美高清自拍一区| 亚洲视频在线观看免费| 久久久午夜视频| 亚洲欧洲午夜一线一品| 91精品成人久久| 亚洲淫片在线视频| 日韩av手机在线看| 久久精品国产2020观看福利| 欧美日韩中文字幕在线| 在线日韩精品视频| 欧美性视频网站| 亚洲一区二区自拍| 国产精品第七十二页| 成人在线免费观看视视频| 亚洲福利在线播放| 97av在线影院| 国产午夜精品全部视频播放| 91久久精品国产91久久| 热久久这里只有精品| 欧美另类在线播放| 日本午夜在线亚洲.国产| 乱亲女秽乱长久久久|