摘要:一繼承與擴展子類使用繼承父類,子類可以將父類所有內容繼承,如下多層繼承無法繼承給子類,如下只是子類引用繼承了父類的保護權限,只能自己和子類使用,外部無法讀取,如下默認公開權限,所有位置都可用,不再重復舉例,各權限如下圖二繼
一、繼承與擴展
1.子類使用extends繼承父類,子類可以將父類所有內容繼承,如下:
//多層繼承 class Person { var $name; var $age; var $sex; function __construct(){ } function say(){ } function eat(){ echo "1111"; } function run(){ } }; class Student extends Person { var $school; function __construct(){ } function study(){ } }; class Teacher extends Student { var $gz; function teach(){ } }; $stu=new Student; $stu->eat(); /1111
2.private無法繼承給子類,如下:
class Person { private $name="liu"; var $age; var $sex; function __construct(){ } function say(){ echo $this->name; } function eat(){ echo "1111"; } function run(){ } }; class Student extends Person { var $school; function __construct(){ } function study(){ } }; class Teacher extends Student { var $dw; function teach(){ echo $this->name; } }; $teacher=new Teacher; $teacher->say();//liu 只是子類引用繼承了父類的say() $teacher->teach();//error
3.protected保護權限,只能自己和子類使用,外部無法讀取,如下:
class Person { private $name="liu"; protected $age=10; var $sex; function __construct(){ } function say(){ echo $this->age; } function eat(){ echo "1111"; } function run(){ } }; class Student extends Person { var $school; function __construct(){ } function study(){ } }; class Teacher extends Student { var $dw; function teach(){ echo $this->age; } }; $teacher=new Teacher; $teacher->say();//10 $teacher->teach();//10
4.public(默認)公開權限,所有位置都可用,不再重復舉例,各權限如下圖:
二、繼承中的重載/覆蓋
1.強類型語言中重載:方法名相同,參數或參數個數不同 2.弱類型語言理解為覆蓋:同一類中同名方法后覆蓋前 3.弱類型中的重載:子類里可以寫與父類同名的方法,即方法的擴展(接口、多態) 4.調用類的方法Person::say(); 5.調用父類(被覆蓋)的方法(默認關鍵字)parent::say(); 6.__construct()也可以覆蓋,但最開始必須調用父類構造函數,如下:
function __construct($name,$age,$sex,$school){ //先調用父類構造方法,否則父類初始化后,子類不變 parent::__construct($name,$age,$sex); $this->school=$school; }
7.權限:子類權限只能>=父類權限,即public > protected > private
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25574.html
摘要:利用計算機來對事物進行抽象并使用便是面向對象編程。被繼承的類稱為基類,繼承基類的新類稱為導出類。所以可以將導出類的實例對象賦給基類,作為一個基類對象使用。所以在一個基類對象上調用導出類的新功能者并沒有什么意義,也不符合現實。 從崛起的智人到被蘋果砸中的牛頓再到現在的你,一直在思考這是個怎么樣的世界? 一、世上本沒有蘋果 看到一張蘋果的圖片,腦海里自然浮現圖片上的是一個蘋果,為什么會稱蘋...
摘要:摘要本文章關注點是理解面向對象概念,從抽象的角度上去理解對象,重點包括理解對象的作用,以及理解面向對象的三大特征封裝,繼承,多態。特性多態不同對象以自己的方式響應相同的消息的能力叫做多態。 摘要:本文章關注點是理解面向對象概念,從抽象的角度上去理解對象,重點包括理解對象的作用,以及理解面向對象的三大特征(封裝,繼承,多態)。本文重點關注的是理解概念。 在理解面向對象之前,首先回答幾個問...
摘要:是完全的面向對象語言,它們通過類的形式組織函數和變量,使之不能脫離對象存在。而在基于原型的面向對象方式中,對象則是依靠構造器利用原型構造出來的。 JavaScript 函數式腳本語言特性以及其看似隨意的編寫風格,導致長期以來人們對這一門語言的誤解,即認為 JavaScript 不是一門面向對象的語言,或者只是部分具備一些面向對象的特征。本文將回歸面向對象本意,從對語言感悟的角度闡述為什...
摘要:眾多面向對象的編程思想雖不盡一致,但是無論哪種面向對象編程語言都具有以下的共通功能。原型編程以類為中心的傳統面向對象編程,是以類為基礎生成新對象。而原型模式的面向對象編程語言沒有類這樣一個概念。 什么是面向對象?這個問題往往會問到剛畢業的新手or實習生上,也是往往作為一個技術面試的開頭題。在這里我們不去談如何答(fu)好(yan)問(guo)題(qu),僅談談我所理解的面向對象。 從歷...
摘要:目錄導語理解對象和面向對象的程序設計創建對象的方式的繼承機制原型對象原型鏈與原型對象相關的方法小結導語前面的系列文章,基本把的核心知識點的基本語法標準庫等章節講解完本章開始進入核心知識點的高級部分面向對象的程序設計,這一部分的內容將會對對象 目錄 導語 1.理解對象和面向對象的程序設計 2.創建對象的方式 3.JavaScript的繼承機制 3.1 原型對象 3.2 原型鏈 3.3 與...
摘要:封裝是面向對象的特征之一,是對象和類概念的主要特性。通過這種方式,對象對內部數據提供了不同級別的保護,以防止程序中無關的部分意外的改變或錯誤的使用了對象的私有部分。構造函數通常被用來自動執行很多初始化操作。 之前的相關問題 面向對象和面向過程的差別,各自的優缺點 面向對象有哪些基本特性?各自特性帶來哪些好處 面向對象的基本語法? 面向對象的基本特性的基本實現 面向對象結合各種設計模式...
閱讀 2148·2021-10-12 10:11
閱讀 849·2021-10-09 09:41
閱讀 3768·2021-09-09 11:37
閱讀 1942·2021-09-08 10:41
閱讀 2644·2019-08-30 12:58
閱讀 2375·2019-08-30 10:58
閱讀 1281·2019-08-26 13:40
閱讀 4118·2019-08-26 13:36