php基礎教程 第十一步 面向對象補充

繼承

上一節中學習了php類,以及類方法、類成員變量相關的一些知識,接下來開始學習php類中的繼承。本節是上一節的補充。(其實也就是為了保持日更隨便發的一篇文)

開始

php繼承是繼承與父類的所有屬性,就像你繼承了你父親的大部分dnf一樣。例如小明的爸爸是紅色頭發、黑色鼻子、藍色眼睛、圓錐腦袋那么小明也大概率是這個情況。
我們查看以下示例了解在php中如何實現繼承:

<?php
class Human {public $sex;public $hair;private function printInfo($val){echo '傳入的值是 '.$val.'<br/>';}public function set_Sex($val){$this->printInfo($val);$this->sex=$val;}public function set_Hair($val){$this->hair=$val;}public function get_Sex(){return $this->sex;}public function get_Hair(){return $this->hair;}
}class MutantHuman extends Human{}$SuperMan=new MutantHuman();
$SuperMan->set_Sex('nan');
$SuperMan->set_Hair('y');echo $SuperMan->get_Sex();
echo ' ';
echo $SuperMan->get_Hair();
?>

以上代碼示例,由上一節的代碼修改而成,主要是新建了一個類并且繼承了 Human類:

class MutantHuman extends Human{}

以上類中,類名為 MutantHuman,并且在類名后,使用了 extends 關鍵字,extends 關鍵字表示繼承于,后面填寫繼承的類名 Human。也就是說 Human 是它爸爸,MutantHuman有它爸爸的方法以及成員變量。那么意思則是 MutantHuman 可以使用 set_Sex方法和 set_Hair,并且擁有 sex 和hair 成員變量。
所以在新建了 MutantHuman 對象 SuperMan 后,可以使用 set_Sex以及 set_Hair方法:

$SuperMan=new MutantHuman();
$SuperMan->set_Sex('nan');
$SuperMan->set_Hair('y');echo $SuperMan->get_Sex();
echo ' ';
echo $SuperMan->get_Hair();

結果如下:
在這里插入圖片描述

方法重寫

當子類集成了父類的方法后,可以重寫修改該方法,如下示例:

<?php
class Human {public $sex;public $hair;private function printInfo($val){echo '傳入的值是 '.$val.'<br/>';}public function set_Sex($val){$this->printInfo($val);$this->sex=$val;}public function set_Hair($val){$this->hair=$val;}public function get_Sex(){return $this->sex;}public function get_Hair(){return $this->hair;}
}class MutantHuman extends Human{public function get_Sex(){echo ' 這是在 MutantHuman 中<br/>';return $this->sex;}
}$SuperMan=new MutantHuman();
$SuperMan->set_Sex('nan');
$SuperMan->set_Hair('y');echo $SuperMan->get_Sex();
echo ' ';
echo $SuperMan->get_Hair();
?>

以上示例中,子類 MutantHuman 已經擁有了父類的方法,可以直接在子類中重寫同名的方法,實現不同的特性。畢竟父親和兒子還是有所不同的。
以上實例中,子類 MutantHuman重寫了 get_Sex 方法。重寫則是重寫一個函數形式與父類同等的方法,修改該方法,使其具有不同的特性。以上重寫的方法中,在里面輸出了 echo ' 這是在 MutantHuman 中<br/>';。結果如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287884.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287884.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287884.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ArcGIS實驗教程——實驗十五:拓撲關系創建與編輯

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 1、拓撲關系的概念 拓撲關系是指滿足拓撲幾何學原理的各空間數據間的相互關系。即用結點、弧段和多邊形所表示的實體之間的鄰接、關聯、包含和連通關系。如:點與點的鄰接關系、點與面…

Sql Server 優化 SQL 查詢:如何寫出高性能SQL語句

1、 首先要搞明白什么叫執行計劃&#xff1f; 執行計劃是數據庫根據SQL語句和相關表的統計信息作出的一個查詢方案&#xff0c;這個方案是由查詢優化器自動分析產生的&#xff0c;比如一條SQL語句如果用來從一個 10萬條記錄的表中查1條記錄&#xff0c;那查詢優化器會選擇“索引…

【Ubuntu】ubuntu物理機安裝方法:wubi

在之前的文章里我們曾經詳細介紹了如何在虛擬機里安裝ubuntu操作系統&#xff0c;但是一些小伙伴希望在自己的電腦里安裝一個ubuntu&#xff0c;來感受一下ubuntu的硬體驗。下面給大家介紹一種通過wubi的安裝方法。 wubi是 Windows Ubuntu-Based Installer 縮寫&#xff0c;是一…

Java之ThreadLocal

1 ThreadLocal接口出現原因 使用ThreadLocal保存當前線程的變量值&#xff0c;這樣你想獲取該變量的值的時候&#xff0c;獲取到的都是本線程的變量值&#xff0c;不會獲取到其他線程設置的值&#xff0c;早在JDK 1.2的版本中就提供java.lang.ThreadLocal&#xff0c;ThreadLo…

server如何調用 thrift_Thrift總結(二)如何快速創建自己的RPC服務

前面介紹了thrift 基礎的東西&#xff0c;怎么寫thrift 語法規范編寫腳本&#xff0c;如何生成相關的語言的接口。不清楚的可以看這個《Thrift總結(一)介紹》。做好之前的準備工作以后&#xff0c;下面就開始如何用Thrift寫RPC接口。如何用Thrift寫RPC接口1. 打開之前下載的thr…

Hello Playwright:(2)簡化部署方式

前言上次的文章Hello Playwright&#xff1a;(1)從開發到部署發表后&#xff0c;有網友留言問&#xff0c;有不有簡化部署的方式&#xff1a;下面&#xff0c;提供 2 種可行的方案。方案 1. Copy其實 Playwright 默認是到C:\Users\用戶名\AppData\Local\ms-playwright文件夾下查…

ArcGIS實驗教程——實驗十六:空間數據查詢

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 一、實驗描述 空間數據庫查詢定義:從空間數據庫中找出所有滿足屬性約束條件和空間約束條件的地理對象。 二、實驗內容 (一)屬性查詢 1、簡單查詢 2、SQL查詢 (二)圖形查詢 1、點查詢 2…

C++入門指南及實戰 第一步 概述及經典HelloWorld

本系列文章環境及學習門檻 編程基礎&#xff1a;無年齡&#xff1a;具有一定的邏輯思維英文&#xff1a;不要求數學&#xff1a;不要求學習時長&#xff1a;每天一篇&#xff0c;一周4-5篇即可&#xff0c;每篇最多1小時死記硬背&#xff1a;不需要&#xff0c;理解至上本機環…

【數學題】男女的比例

在一個重男輕女的國家里&#xff0c;每家每戶都想生男孩。若一戶人家生了一個男孩&#xff0c;就不會再生了。若一家生了一個女孩&#xff0c;便會再生一個&#xff0c;直到生下男孩為止。請問這個國家(有無限多的人民)的男女比例是多少?答案&#xff1a;1比1。在某一戶人家中…

為什么云服務器沒西南的_去年“雙11“我買的那臺云服務器

一、為什么會買云服務器為什么初學者需要一臺云服務器&#xff1f;從我自己那僅有的一點經驗來看&#xff0c;重點無非這一個詞&#xff1a;實踐。細數一下初學者擁有一臺云服務器的好處&#xff1a;學習操作系統、熟悉環境大部分初學者在本地使用的是windows系統&#xff0c;在…

Java線程安全以及線程安全的實現方式和內存模型(JMM)

一、了解幾個概念 1&#xff09;臨界區&#xff1a; 臨界區指的是一個訪問共用資源&#xff08;例如&#xff1a;共用設備或是共用存儲器&#xff09;的程序片段&#xff0c;而這些共用資源又無法同時被多個線程訪問的特性。當有線程進入臨界區段時&#xff0c;其他線程或是進…

animate 實現滑動切換效果

今天和大家分享一下用 animate 實現滑動切換效果的小例子 ------- 來自<一只有夢想的前端小白> 大家都知道jQuery 提供的有一下幾種方法能夠實現滑動效果&#xff1a; slideDown()slideUp()slideToggle()但是以上的滑動不太方便控制其滑動的方向&#xff0c;所以我們還是…

[不一樣的依賴注入]通過遞歸實現容器里依賴注入

遞歸實現依賴注入創建所需的依賴服務類1public class Test2{3 public void PrintTest()4 {5 Console.WriteLine("Hello World");6 }7}89public class Test2 10{ 11 private readonly Test _test; 12 13 public Test2(Test test) 14 { 15 …

ArcGIS實驗教程——實驗十七:緩沖區分析(Buffer Analysis)

ArcGIS實驗視頻教程合集:《ArcGIS實驗教程從入門到精通》(附配套實驗數據) 【實驗描述】 緩沖區(Buffer)是為了識別某一地理實體對周圍地物的影響而在其周圍建立的一定寬度多邊形區域,緩沖區分析(Buffer Analysis)是用來確定不同地理要素的空間臨近性或接近程度的一種分…

Java之jdk和CGLib實現動態代理

1 jdk實現動態代理源碼實現 這里需要用到InvocationHandler接口 public interface Hello {public void sayHello(); } public class HelloImpl implements Hello {Overridepublic void sayHello() {System.out.println("hello word");} }import java.lang.reflect…

從Visual Studio中生成Linux設備

本文講的是從Visual Studio中生成Linux設備&#xff0c;【IT168 云計算頻道】近日Novell發布了SUSE Studio&#xff1a;一個用于創建Linux設備&#xff08;appliance&#xff09;的工具。與此同時&#xff0c;Mono小組創建了一個插件以從Visual Studio中生成支持SUSE的設備。 …

C++入門指南及實戰 第二步 HelloWorld及擴展詳解

回顧 在上一節中&#xff0c;我們編寫了如下代碼&#xff0c;完成了 HelloWorld程序的編寫&#xff1a; #include<iostream> using namespace std;int main(){cout <<"Hello World";return 0; }本小節將會對該代碼進行講解&#xff0c;并且解釋一下專業…

2560x1600分辨率高嗎_做設計還弄不清分辨率和像素之間的關系,來了解下他們是怎么換算...

許多同學都在問我關于像素的問題&#xff0c;為什么印刷時要300分辨率以上&#xff1f;網頁為什么72就夠了&#xff1f;做戶外噴繪30&#xff0c;甚至巨幅畫面20就上了。關于這些還是很多人不知道的&#xff0c;要不也不會被賣手機的忽悠&#xff0c;各大手機推銷員拿著手機大聲…

使用 fixture 機制重構 appium_helloworld

一、前置說明 在 pytest 基礎講解 章節,介紹了 pytest 的特性和基本用法,現在我們可以使用 pytest 的一些機制,來重構 appium_helloworld 。 appium_helloworld 鏈接: 編寫第一個APP自動化腳本 appium_helloworld ,將腳本跑起來 代碼目錄結構: pytest.ini 設置: [pyt…

linux程序調試命令strace

strace命令用法詳解: strace常用來跟蹤進程執行時的系統調用和所接收的信號。 在Linux世界&#xff0c;進程不能直接訪問硬件設備&#xff0c;當進程需要訪問硬件設備(比如讀取磁盤文件&#xff0c;接收網絡數據等等)時&#xff0c;必須由用戶態模式切換至內核態模式&#xff0…