中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      PHP中子類重載父類的方法介紹

      時間:2024-09-26 12:04:18 PHP 我要投稿
      • 相關推薦

      PHP中子類重載父類的方法介紹

        在PHP中不能定義重名的函數,也包括不能再同一個類中定義重名的方法,所以也就沒有方法重載。單在子類中可以定義和父類重名的方法,因為父類的方法已經在子類中存在,這樣在子類中就可以把從父類中繼承過來的方法重寫。

        子類中重載父類的方法就是在子類中覆蓋從父類中繼承過來的方法,父類中的方法被子類繼承過來不就可以直接使用嗎?為什么還要重載呢?因為有一些情況我們必須要覆蓋的。例如,有一個“鳥”類,在這個類中定義了鳥的通用方法“飛翔”。將“鴕鳥”類作為它的子類,就會將“飛翔”的方法繼承過來,但只要一調用“鴕鳥”類中的這個“飛翔”的方法,鴕鳥就會飛走。雖然鴕鳥是不會飛的,但其他特性都具有“鳥類”的特性,所以在聲明“鴕鳥”類時還是可以繼承“鳥”類的,但必須在“鴕鳥”類中將“鳥”類中繼承過來的“飛翔”方法改寫,就需要在子類中重載父類中的方法。

        在下面的例子中,聲明的Person類中有一個“說話”方法,Student類繼承Person類后可以直接使用“說話”方法。但Person類中的“說話”方法只能說出它自己的成員屬性,而Student類對Person類進行了擴展,多添加了幾個新的成員屬性。代碼如下所示:

        name = $name;$this ->sex = $sex;$this ->age = $age;}//在人類中聲明一個通用的說話方法,介紹一下自己function say(){echo "我的名字:".$this-> name.",性別:".$this ->sex.",年齡:".$this ->age."。

        ";}}//聲明一個學生類,使用extends關鍵字擴展(繼承)person類class Student extends Person {private $school; //在學生類中聲明一個所在學校school的成員屬性//覆蓋父類中的構造方法,在參數列表中添加一個學校屬性,用來創(chuàng)建對象并初始化成員屬性function __construct($name="",$sex="男",$age=1,$school=""){$this ->name = $name;$this ->sex = $sex;$this ->age = $age;$this ->school = $school;}function study(){echo $this ->name."正在".$this ->school."學習

        ";}//定義一個和父類中同名的方法,將父類中的說話方法覆蓋并重寫,多說出所在的學校名稱function say(){echo "我的名字:".$this ->name.",性別:".$this ->sex.",年齡:".$this ->age.",在".$this ->school."學校上學

        ";}}$student= new Student("張三","男",20,"edu"); //創(chuàng)建一個學生對象,并傳給一個學校名稱參數$student -> say(); //調用學生類中覆蓋父類的說話方法?>

        改程序運行后輸出的結果為:

        我的名字叫:張三,性別:男,我的年齡是:20,在edu學校上學

        在PHP中,提供了在子類重載的方法中調用父類被覆蓋方法的功能。這樣就可以在子類重寫的方法中,繼續(xù)使用從父類繼承過來并被覆蓋的方法,然后再按要求多添加一些新功能。調用的格式是使用“parent:方法名”在子類的重載方法中調用父類中被覆蓋的方法。將上例中的代碼修改一下,在子類重寫的構造方法中使用“parent::__construct()”調用父類中被覆蓋的構造方法,再多添加一條對子類中新擴展的成員屬性初始化的代碼。在子類中重寫的say()方法中使用“parent::say()”調用父類中被覆蓋的say()方法,再添加上輸出子類成員屬性的功能。

        代碼如下所示:

        name = $name;$this ->sex = $sex;$this ->age = $age;}//在人類中聲明一個通用的說話方法,介紹一下自己function say(){echo "我的名字:".$this-> name.",性別:".$this ->sex.",年齡:".$this ->age."。

        ";}}//聲明一個學生類,使用extends關鍵字擴展(繼承)person類class Student extends Person {private $school; //在學生類中聲明一個所在學校school的成員屬性//覆蓋父類中的構造方法,在參數列表中添加一個學校屬性,用來創(chuàng)建對象并初始化成員屬性function __construct($name="",$sex="男",$age=1,$school=""){//調用父類中被覆蓋的構造方法,為從父類中集成過來額出行賦初值parent::__construct($name,$sex,$age);$this ->school = $school;}function study(){echo $this ->name."正在".$this ->school."學習

        ";}//定義一個和父類中同名的方法,將父類中的說話方法覆蓋并重寫,多說出所在的學校名稱function say(){parent::say(); //調用父類中被本方法覆蓋掉的方法echo "在".$this ->school."學校上學

        ";}}$student= new Student("張三","男",20,"edu"); //創(chuàng)建一個學生對象,并傳給一個學校名稱參數$student -> say(); //調用學生類中覆蓋父類的說話方法?>

        上面的例子輸出的結果和前一個例子是一樣的,但在本例中通過在子類中直接調用父類中被覆蓋的方法要簡便很多。另外,在子類覆蓋父類的方法時一定要注意,在子類中重寫的方法訪問權限一定不能低于父類被覆蓋的方法的訪問權限。例如,如果父類中的訪問權限是protected,那么在子類中重寫的方法的權限就要是protected或public。

      【PHP中子類重載父類的方法介紹】相關文章:

      PHP中關于類的定義10-02

      PHP面向對象重載重寫的不同10-25

      PHP中date函數常用時間處理方法09-13

      php中static靜態(tài)變量的使用方法06-11

      Java方法繼承、重載和覆蓋總結05-09

      PHP錯誤類型及屏蔽方法08-22

      簡單分析PHP中序列化用法介紹08-15

      PHP中curl的使用實例07-31

      PHP處理密碼的幾種方法10-17

      十天學會php的方法09-23

      主站蜘蛛池模板: 亚洲人成网站在线播放小说| 亚洲欧洲日产国码久在线| 久久精品国产屋| 日韩中文字幕久久久经典网| 新蔡县| 国产av一区二区三区福利| 亚洲人成伊人成综合网中文| 亚洲国产综合亚洲综合国产| 久久99久久99精品免观看女同| h动漫尤物视频| 亚洲熟妇免费在线视频| 日韩人妻精品一区二区在线推荐| 最新国产精品精品视频| 高密市| 赤壁市| 滕州市| 黄浦区| 97色人阁俺也去人人人人人| 四会市| 德庆县| 陵川县| 开心五月婷婷丁香综合| 怀宁县| 乌审旗| 日韩精品极品视频在线观看蜜桃| 广德县| 日韩av一区二区毛片| 最新国产精品精品视频| 国产福利美女小视频| 亚洲综合久久久中文字幕| 敖汉旗| 日韩中文字幕区一区有砖一区| 国产美女主播在线一区| 高h视频在线免费观看| 日本高清色惰www在线视频| 草莓视频中文字幕人妻系列| 香蕉久久夜色精品国产| 中文字幕日韩熟女av| 亚洲AV秘 无码一区二区在线 | 杨幂Av一区二区三区| 国产精品欧美成人片|