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

首頁 > 學院 > 開發設計 > 正文

第十八章 面向對象的特性

2019-11-15 01:36:39
字體:
來源:轉載
供稿:網友
第十八章 面向對象的特性

學習要點:1.OOP 的封裝2.OOP 的繼承3.OOP 的多態

面向對象的三個主要特性是封裝、繼承和多態。

一.OOP的封裝

隱藏對象的字段和實現細節,僅對外公開接口,控制在程序中字段的讀和修改的訪問級別;將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。

字段的作用域1.public 公共的(類外可以訪問)2.PRivate 私有的(類內可以訪問)3.protected 受保護的(類內和子類可以訪問,類外不可訪問)

創建使用了私有的字段,這樣外部就無法訪問了

class Computer {    //類的字段(成員)    private $_name = '聯想120';    private $_model = 'LX';}

通過一個公共方法作為入口,訪問私有字段,而必須使用$this關鍵字。

class Computer {    //類的字段(成員)    private $_name = '聯想120';    private $_model = 'LX';    //通過公共方法來訪問私有字段    function run() {        echo $this->_name;    }}$computer->run ();

屬性操作(私有字段的賦值與取值)

可以設計兩個公共方法,一個方法為setName(),用于賦值;一個方法為getName(),用于取值。

class Computer {    //類的字段(成員)    private $_name;    private $_model;    //賦值    function setName($_name) {        $this->_name = $_name;    }    //取值    function getName() {        return $this->_name;    }}$computer = new Computer ();$computer->setName ( 'IBM' );echo $computer->getName ();

如果有十個字段那么就必須要二十個方法才能夠賦值和取值,那么有沒有更簡便的方法呢?php內置兩個方法(攔截器)專門用于取值與賦值:__set(),__get()。

class Computer {    //類的字段(成員)    private $_name;    private $_model;    //所有字段的賦值都在這里進行    function __set($_key, $_value) {        $this->$_key = $_value;    }    //所有字段的取值都在這里進行    function __get($_key) {        return $this->$_key;    }}$computer = new Computer ();$computer->_model = 'LX';echo $computer->_model;

方法私有:有些使用類里面的方法并不需要對外公開,只是里面運作的一部分,這個時候可以將方法也封裝起來。

class Computer {    //類的字段(成員)    private $_name;    private $_model;    //私有方法    private function getEcho() {        echo '我是私有化的方法';    }    //公共方法一般是對外的入口    public function run() {        $this->getEcho ();    }}$computer = new Computer ();$computer->run ();

建議:方法前面如果沒有修飾符,那么就是外部可訪問的公共方法,但為了讓程序更加的清晰,建議在前面加上public。

常量(constant)在類中可以定義常量,用來表示不會改變的值。對于從該類實例化的任何對象來說,常量值在這些對象的整個生命周期中都保持不變。

class Computer {    const PI = 3.1415926;}echo Computer::PI;

靜態類成員有時候,可能需要創建供所有類實例共享的字段和方法,這些字段和方法與所有的類實例有關,但不能由任何特定對象調用。

class Computer {    public static $_count = 0;}echo Computer::$_count;

一般來說,必須將字段做成私有化。所以可能需要這么做:

class Computer {    private static $_count = 0;    public static function setRun() {        self::$_count ++;    }    public static function getRun() {        return self::$_count;    }}Computer::setRun ();echo Computer::getRun ();

Instanceof關鍵字PHP5有一個instanceof關鍵字,使用這個關鍵字可以確定一個對象是類的實例、類的子類,還是實現了某個特定接口,并進行相應的操作。

class Computer {    }$computer = new Computer ();echo ($computer instanceof Computer);

二.OOP繼承

繼承是從一個基類得到一個或多個類的機制。繼承自另一個類的類被稱為該類的子類。這種關系通常用父類和孩子來比喻。子類將繼承父類的特性。這些特性由屬性和方法組成。子類可以增加父類之外的新功能,因此子類也被稱為父類的“擴展”。

在PHP中,類繼承通過extends關鍵字實現。繼承自其他類的類成為子類或派生類,子類所繼承的類成為父類或基類。(PHP只支持單繼承,PHP不支持方法重載)。

class Computer {    private $_name = '聯想120';    private function __get($_key) {        return $this->$_key;    }    public function run() {        echo '我是父類';    }}class NoteBookComputer extends Computer {}$notebookcomputer = new NoteBookComputer ();$notebookcomputer->run ();echo $notebookcomputer->_name;

字段和方法的重寫(覆蓋)有些時候,并不是特別需要父類的字段和方法,那么可以通過子類的重寫來修改父類的字段和方法。

class Computer {    public $_name = '聯想120';    protected function run() {        echo '我是父類';    }}class NoteBookComputer extends Computer {    public $_name = 'IBM';    public function run() {        echo '我是子類';    }}

子類調用父類的字段或方法為了安全,我們一般將父類的方法封裝了起來,這樣,外部就無法調用,只能被繼承它的子類所看到。這個時候,就需要通過子類操作來調用父類了。

class Computer {    protected $_name = '聯想120';    protected function run() {        echo '我是父類';    }}class NoteBookComputer extends Computer {    public function getName() {        echo $this->_name;    }    public function getRun() {        echo $this->run ();    }}

通過重寫調用父類的方法有的時候,我們需要通過重寫的方法里能夠調用父類的方法內容,這個時候就必須使用語法:父類名::方法() 或者parent::方法()即可調用。

class Computer {    protected function run() {        echo '我是父類';    }}class NoteBookComputer extends Computer {    public function run() {        echo Computer::run ();    }}

final關鍵字可以防止類被繼承,有些時候只想做個獨立的類,不想被其他類繼承使用,那么就必須使用這個關鍵字。建議只要是單獨的類,都加上這個關鍵字。

final class Computer {    //無法繼承的類    final public function run() {    } //無法被繼承的方法}class NoteBookComputer extends Computer {    //會報錯}

抽象類和方法(abstract)抽象方法很特殊,只在父類中聲明,但在子類中實現。只有聲明為abstract的類可以聲明抽象方法。

規則:1.抽象類不能被實例化,只能被繼承。2.抽象方法必須被子類方法重寫。

abstract class Computer {    abstract function run();}final class NotebookComputer extends Computer {    public function run() {        echo '我實現了';    }}

接口(interface)接口定義了實現某種服務的一般規范,聲明了所需的函數和常量,但不指定如何實現。之所以不給出實現的細節,是因為不同的實體可能需要用不同的方式來實現公共的方法定義。關鍵是要建立必須實現的一組一般原則,只要滿足了這些原則才能說實現了這個接口。

規則:1.類全部為抽象方法(不需要聲明abstract)2.接口抽象方法必須是public3.成員(字段)必須是常量

interface Computer {    const NAME = '聯想120';    public function run();}final class NotebookComputer implements Computer {    public function run() {        echo '實現了接口的方法';    }}$notebookcomputer = new NoteBookComputer ();$notebookcomputer->run ();echo Computer::NAME;

子類可以實現多個接口

interface Computer {    const NAME = '聯想120';    public function run();}interface Notebook {    public function book();}final class NotebookComputer implements Computer, Notebook {    public function run() {        echo '實現了接口的方法';    }    public function book() {        echo '實現了接口的方法';    }}

三.多態

多態是指OOP 能夠根據使用類的上下文來重新定義或改變類的性質或行為,或者說接口的多種不同的實現方式即為多態。把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。

interface Computer {    public function version();    public function work();}class NotebookComputer implements Computer {    public function version() {                echo '聯想120';    }    public function work() {        echo '筆記本正在隨時攜帶運行!';    }}class desktopComputer implements Computer {    public function version() {        echo 'IBM';    }    public function work() {        echo '臺式電腦正在工作站運行!';    }}class Person {    public function run($type) {        $type->version ();        $type->work ();    }}$person = new Person ();$desktopcomputer = new desktopComputer ();$notebookcomputer = new NoteBookComputer ();$person->run ( $notebookcomputer );

注:文章出自李炎恢PHP視頻教程,本文僅限交流使用,不得用于商業用途,否則后果自負。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品揄拍500视频| 亚洲肉体裸体xxxx137| 日韩高清电影免费观看完整| 久久久999精品视频| 亚洲精品久久久久久久久久久久久| 国产精品丝袜视频| 亚洲综合精品一区二区| 久久99精品久久久久久青青91| 在线观看不卡av| 亚洲天堂精品在线| 亚洲色图在线观看| 日韩精品久久久久久久玫瑰园| 欧美刺激性大交免费视频| 这里只有精品久久| 日本久久久久亚洲中字幕| 欧美日韩一区二区免费在线观看| 欧美综合在线第二页| 91精品国产91久久久久久不卡| 亚洲免费一在线| 久久精品中文字幕电影| 45www国产精品网站| 日韩黄色在线免费观看| 国产精品久久久久久久久久ktv| 精品久久久久国产| 亚洲乱亚洲乱妇无码| 欧美视频在线观看 亚洲欧| 黄色成人在线播放| 国产精品成熟老女人| 欧美国产日韩二区| 国产精品999| 91精品啪在线观看麻豆免费| 欧美性理论片在线观看片免费| 色婷婷av一区二区三区久久| 日韩精品丝袜在线| 精品少妇v888av| 九九热99久久久国产盗摄| 欧美另类精品xxxx孕妇| 欧美野外wwwxxx| 欧美极品欧美精品欧美视频| 成人国产在线视频| 久久久久久久国产精品| 97精品视频在线| 色妞在线综合亚洲欧美| 色噜噜狠狠色综合网图区| 国产精品∨欧美精品v日韩精品| 亚洲最大福利网站| 久久久在线观看| 夜色77av精品影院| 91热精品视频| 亚洲欧美一区二区精品久久久| 欧美成人免费全部| 91经典在线视频| 日本高清+成人网在线观看| 97精品国产97久久久久久| 亚洲小视频在线观看| 日韩激情视频在线| 国产国语videosex另类| 国内免费精品永久在线视频| 欧美激情精品久久久久久| 亚洲人成五月天| 亚洲成人黄色在线观看| 亚洲剧情一区二区| 美女精品视频一区| 久久久久久久一区二区| 97久久精品国产| 日本精品va在线观看| 亚洲美女精品成人在线视频| 视频一区视频二区国产精品| 国产精品久久久久久网站| 日韩av一区二区在线| 亚洲精品国产精品国自产观看浪潮| 日韩av不卡电影| 日韩欧美中文字幕在线播放| 久99久在线视频| 亚洲电影免费观看高清| 日韩国产激情在线| 欧美成人精品在线播放| 欧美日韩亚洲成人| 日韩电影中文字幕av| 亚洲精品美女久久久| 91九色国产社区在线观看| 国内外成人免费激情在线视频网站| 在线播放国产一区二区三区| 日韩av一区在线观看| 久久婷婷国产麻豆91天堂| 日韩免费av片在线观看| 亚洲精品电影久久久| 亚洲视频自拍偷拍| 美女国内精品自产拍在线播放| 在线观看国产精品日韩av| 国产精品99久久久久久白浆小说| 国产亚洲精品久久久| 久久久久久这里只有精品| 亚洲欧洲免费视频| 热久久免费视频精品| 中文字幕九色91在线| 亚洲japanese制服美女| 亚洲国产精品va在看黑人| 日韩久久精品电影| 热99精品里视频精品| 成人高清视频观看www| 韩国日本不卡在线| 中文字幕日韩精品在线| 97国产精品人人爽人人做| 91精品视频在线免费观看| 久久99视频免费| 成人春色激情网| 久久成人精品视频| 在线播放亚洲激情| 亚洲欧美国产精品va在线观看| 狠狠综合久久av一区二区小说| 秋霞成人午夜鲁丝一区二区三区| 91在线视频一区| 国外成人性视频| 欧美日韩日本国产| 国产a级全部精品| 欧美性高跟鞋xxxxhd| 欧美剧在线观看| 欧美第一淫aaasss性| www.美女亚洲精品| 亚洲精品国产美女| 国产成人在线亚洲欧美| 亚洲精品美女久久久| 亚洲国产精品va在线看黑人动漫| 国产视频亚洲视频| 久久久久久久久久久免费| 国产精品久久久久久一区二区| 亚洲成人黄色网址| 亚洲一区二区三区四区视频| 国产精品欧美一区二区三区奶水| 欧美丰满少妇xxxx| 欧美一级bbbbb性bbbb喷潮片| 色青青草原桃花久久综合| 久久久久久久久久久亚洲| 亚洲品质视频自拍网| 日韩美女在线播放| 亚洲美女性生活视频| 米奇精品一区二区三区在线观看| 久久999免费视频| 亚洲国产中文字幕久久网| 久久精品中文字幕电影| 亚洲欧美激情精品一区二区| 国产成+人+综合+亚洲欧洲| 欧美视频二区36p| 亚洲欧美日韩中文在线制服| 91沈先生在线观看| 色偷偷av一区二区三区| 国产日韩欧美在线视频观看| 原创国产精品91| 色伦专区97中文字幕| 亚洲日韩中文字幕在线播放| 欧美性极品xxxx做受| 不卡毛片在线看| 中文字幕在线看视频国产欧美在线看完整| 欧美一级视频一区二区| 全亚洲最色的网站在线观看| 欧美高清电影在线看| 亚洲色图综合网| 国内精品美女av在线播放| 国产精自产拍久久久久久蜜| 亚洲国产精品免费| 91性高湖久久久久久久久_久久99| 欧美第一黄色网| 韩国三级电影久久久久久|