《PHP應(yīng)用:PHP面向?qū)ο笤斀猓ㄈ芬c(diǎn):
本文介紹了PHP應(yīng)用:PHP面向?qū)ο笤斀猓ㄈ?,希望?duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
PHP應(yīng)用面向?qū)ο?對(duì)象概念是面向?qū)ο蠹夹g(shù)的核心.在顯示世界里我們所面對(duì)的事情都是對(duì)象,如計(jì)算機(jī)、電視機(jī)、自行車等.在面向?qū)ο蟮姆ㄊ皆O(shè)計(jì)中,對(duì)象是一個(gè)由信息及對(duì)信息進(jìn)行處理的描述所組成的整體,是對(duì)現(xiàn)實(shí)世界的抽象.
PHP應(yīng)用對(duì)象的主要三個(gè)特性
PHP應(yīng)用對(duì)象的行為:可以對(duì) 對(duì)象施加那些操作,開燈,關(guān)燈就是行為.
對(duì)象的形態(tài):當(dāng)施加那些辦法是對(duì)象如何響應(yīng),顏色,尺寸,外型.
對(duì)象的表示:對(duì)象的表示就相當(dāng)于身份證,具體區(qū)分在相同的行為與狀態(tài)下有什么不同.
PHP應(yīng)用面向?qū)ο竽P?/strong>
PHP應(yīng)用面向?qū)ο蟮母拍睿?br>
PHP應(yīng)用oop(面向?qū)ο蟮木幊?它能是其代碼更加簡(jiǎn)潔易于維護(hù)而且具有更強(qiáng)的可重性
PHP應(yīng)用1、PHP面向?qū)ο?三)
PHP應(yīng)用四、OOP的高級(jí)實(shí)踐
PHP應(yīng)用4.3 Static-靜態(tài)成員
PHP應(yīng)用
<?php
date_default_timezone_set("PRC");
/**
* 1. 類的定義以class關(guān)鍵字開始,后面跟著這個(gè)類的名稱.類的名稱命名通常每個(gè)單詞的第一個(gè)字母大寫.
* 2. 定義類的屬性
* 3. 定義類的方法
* 4. 實(shí)例化類的對(duì)象
* 5. 使用對(duì)象的屬性和方法
*/
class Human{
public $name;
public $height;
public $weight;
public function eat($food){
echo $this->name."'s eating ".$food."<br/>";
}
}
class Animal{
public $kind;
public $gender;
}
class NbaPlayer extends Human{
// 類的屬性的定義
public $name="Jordan";// 定義屬性
public $height="198cm";
public $weight="98kg";
public $team="Bull";
public $playerNumber="23";
private $age="44";
public $president="David Stern";
// 類的方法的定義
public function changePresident($newP){
$this->president=$newP;
}
public function run() {
echo "Running<br/>";
}
public function jump(){
echo "Jumping<br/>";
}
public function dribble(){
echo "Dribbling<br/>";
}
public function shoot(){
echo "Shooting<br/>";
}
public function dunk(){
echo "Dunking<br/>";
}
public function pass(){
echo "Passing<br/>";
}
public function getAge(){
echo $this->name."'s age is ".$this->age;
}
function __construct($name, $height, $weight, $team, $playerNumber){
print $name . ";" . $height . ";" . $weight . ";" . $team . ";" . $playerNumber."\n";
$this->name = $name; // $this是php里面的偽變量,表示對(duì)象自身
$this->height = $height; // 通過(guò)$this可以設(shè)置對(duì)象的屬性值
$this->weight = $weight;
$this->team = $team;
$this->playerNumber = $playerNumber;
}
}
/**
* 1. 類實(shí)例化為對(duì)象時(shí)使用new關(guān)鍵字,new之后緊跟類的名稱和一對(duì)括號(hào).
* 2. 使用對(duì)象可以像使用其他值一樣進(jìn)行賦值操作
*/
$jordan = new NbaPlayer("Jordan", "198cm","98kg","Bull","23");echo "<br/>";
$james=new NbaPlayer("James", "203cm", "120kg", "Heat", "6");echo "<br/>";
// 拜訪對(duì)象的屬性使用的語(yǔ)法是->符號(hào),后面跟著屬性的名稱
echo $jordan->name."<br/>";
// 調(diào)用對(duì)象的某個(gè)方法使用的語(yǔ)法是->符號(hào),后面跟著方法的名稱和一對(duì)括號(hào)
$jordan->run();
$jordan->pass();
//子類調(diào)用父類的方法
$jordan->eat("apple");
//試著調(diào)用private,直接以及通過(guò)內(nèi)部的public函數(shù)
//$jordan->age;
$jordan->getAge();echo "<br/>";
$jordan->changePresident("Adam Silver");
echo $jordan->president."<br/>";
echo $james->president."<br/>";
直接從上述例子開始吧.
這里想得到的是,把兩位對(duì)象的某一個(gè)變量同時(shí)變掉.――用static
public static $president="David Stern";
// 類的方法的定義
public static function changePresident($newP){
static::$president=$newP;//這里static換成self更符合規(guī)范
}
PHP應(yīng)用注意這里static的位置,以及,方法內(nèi)的::
PHP應(yīng)用調(diào)用的辦法也有所變動(dòng).
PHP應(yīng)用
echo NbaPlayer::$president;echo "<br/>";
NbaPlayer::changePresident("Adam Silver");
echo NbaPlayer::$president;echo "<br/>";
PHP應(yīng)用也就是像之前說(shuō)的,靜態(tài)成員就是個(gè)常量,所以不針對(duì)某個(gè)具體的對(duì)象(不受具體對(duì)象的約束)――基于此,定義&賦值&調(diào)用都不必要具體的對(duì)象參與.
PHP應(yīng)用內(nèi)部調(diào)用要用self/static::$...
PHP應(yīng)用外部調(diào)用,類名::
PHP應(yīng)用用處便是所有的對(duì)象共用的數(shù)據(jù).
PHP應(yīng)用--如果內(nèi)部調(diào)用時(shí),變量在父類中
PHP應(yīng)用好比說(shuō),在上述例子中,父類human中寫這么一句話
PHP應(yīng)用public static $aaa="dafdfa";
PHP應(yīng)用?然后在子類nbaplayer中,調(diào)用父類的靜態(tài)成員時(shí),要
PHP應(yīng)用echo parent::$aaa;
PHP應(yīng)用而外部調(diào)用,依照上面說(shuō)的,類名::,所以,直接父類類名即可
PHP應(yīng)用echo Human::$aaa;
PHP應(yīng)用--其他
PHP應(yīng)用在靜態(tài)方法中,是無(wú)法拜訪其他變量的,也就是說(shuō),不能用$this->
PHP應(yīng)用--小結(jié)
PHP應(yīng)用/**
?* 靜態(tài)成員
?* 1. 靜態(tài)屬性用于保存類的公有數(shù)據(jù)
?* 2. 靜態(tài)方法里面只能拜訪靜態(tài)屬性
?* 3. 靜態(tài)成員不需要實(shí)例化對(duì)象就可以拜訪
?* 4. 類內(nèi)部,可以通過(guò)self或者static關(guān)鍵字拜訪自身的靜態(tài)成員
?* 5. 可以通過(guò)parent關(guān)鍵字拜訪父類的靜態(tài)成員
?* 6. 可以通過(guò)類名稱在外部拜訪類的靜態(tài)成員
?*/
PHP應(yīng)用4.4 Final成員
PHP應(yīng)用--問(wèn)題
PHP應(yīng)用不希望某個(gè)類擁有子類;
PHP應(yīng)用不希望子類修改父類中的某個(gè)變量(避免重寫?)
PHP應(yīng)用--final
PHP應(yīng)用》=php5版本
PHP應(yīng)用舉個(gè)例子
PHP應(yīng)用
class BaseClass{
public function test(){
echo "BaseClass::test called<br/>";
}
public function test1(){
echo "BaseClass::test1 called<br/>";
}
}
class ChildClass extends BaseClass{
public function test(){
echo "ChildClass::test called<br/>";
}
}
$obj=new ChildClass();
$obj->test();
PHP應(yīng)用?子類中編寫跟父類中完全一致的辦法名(內(nèi)容可以不同),會(huì)完成對(duì)父類辦法的重寫!
PHP應(yīng)用所以,不希望被重寫的父類中的辦法,寫上final
PHP應(yīng)用依此類推,對(duì)于不想有子類的父類,在類名那里寫上final
PHP應(yīng)用--小結(jié)
PHP應(yīng)用/**
?* 重寫和Final
?* 1. 子類中編寫跟父類完全一致的辦法可以完成對(duì)父類辦法的重寫
?* 2. 對(duì)于不想被任何類繼承的類可以在class之前添加final關(guān)鍵字
?* 3. 對(duì)于不想被子類重寫(overwrite, 修改)的辦法,可以在辦法定義前面添加final關(guān)鍵字
?*/
PHP應(yīng)用4.5 數(shù)據(jù)拜訪
PHP應(yīng)用先把final都去掉
PHP應(yīng)用--parent
PHP應(yīng)用然后再子類中的辦法中寫
PHP應(yīng)用parent::test();
PHP應(yīng)用運(yùn)行后會(huì)發(fā)現(xiàn),依然可以通過(guò)parent的關(guān)鍵字調(diào)用父類中,即使是被重寫的數(shù)據(jù)
PHP應(yīng)用--self
PHP應(yīng)用然后在父類中的辦法test中寫
PHP應(yīng)用self::test1();
PHP應(yīng)用運(yùn)行后,發(fā)現(xiàn)self可以調(diào)用同一個(gè)類中的數(shù)據(jù)(其他辦法/靜態(tài)變量/常量const)
PHP應(yīng)用--小結(jié)
PHP應(yīng)用/**
?* 數(shù)據(jù)拜訪補(bǔ)充
?* 1. parent關(guān)鍵字可以用于調(diào)用父類被重寫的類成員
?* 2. self關(guān)鍵字可以用于拜訪類自身的成員方法,也可以用于拜訪自身的靜態(tài)成員和類常量;不能用于拜訪類自身的屬性;拜訪類常量時(shí)不用在常量名稱前面加$符號(hào)
?* 3. static關(guān)鍵字用于拜訪類自身定義的靜態(tài)成員,拜訪靜態(tài)屬性時(shí)需要在屬性名前面添加$符號(hào)
?*/
PHP應(yīng)用4.6 對(duì)象接口
PHP應(yīng)用非常重要!!!
PHP應(yīng)用--問(wèn)題
PHP應(yīng)用不同的類,有著相同的行為,但相同的行為又有著不同的實(shí)現(xiàn)辦法.
PHP應(yīng)用比如人和動(dòng)物都會(huì)吃東西,但吃的方式辦法又不太一樣.
PHP應(yīng)用--定義
PHP應(yīng)用接口便是把不同類的共同行為進(jìn)行了定義,然后在不同的類里面實(shí)現(xiàn)不同的功能.
PHP應(yīng)用--栗子?
PHP應(yīng)用可以看到,接口中并沒(méi)有辦法的具體實(shí)現(xiàn),但必須有辦法!
PHP應(yīng)用那么,下面是,“人類會(huì)吃”
PHP應(yīng)用
//具體對(duì)象,連接到接口
class Human implements ICanEat{
public function eat($food){
echo "Human eating ".$food.".<br/>";
}
}
$obj=new Human();
$obj->eat("shit");
PHP應(yīng)用請(qǐng)忽略我給出的“食物”.
PHP應(yīng)用注意,不再用extends,而是implements.然后,同樣是辦法名的完全相同.然后,對(duì)象必須/最好實(shí)現(xiàn)辦法.
PHP應(yīng)用繼續(xù)
PHP應(yīng)用
interface ICanEat{
public function eat($food);
}
//具體對(duì)象,連接到接口
class Human implements ICanEat{
public function eat($food){
echo "Human eating ".$food.".<br/>";
}
}
class Animal implements ICanEat{
public function eat($food){
echo "Animal eating ".$food.".<br/>";
}
}
$obj=new Human();
$obj->eat("shit");
$monkey=new Animal();
$monkey->eat("banana");
PHP應(yīng)用?讓動(dòng)物也吃起來(lái)!
PHP應(yīng)用--逆向操作
PHP應(yīng)用判斷某個(gè)對(duì)象是否連接了某個(gè)接口.
PHP應(yīng)用會(huì)返回boolean值.
PHP應(yīng)用--更多的栗子
PHP應(yīng)用
interface ICanPee extends ICanEat{
public function pee();
}
class Demon implements ICanPee{
public function pee(){
echo "Can demon pee?";
}
public function eat($food){
echo "Can demon eat ".$food;
}
}
$ghost=new Demon();
$ghost->pee();
$ghost->eat("shit");
PHP應(yīng)用?接口本質(zhì)上也是類,可以被繼承/繼承,但是使用繼承接口的接口,所有父類、“爺類”的辦法都要有具體實(shí)現(xiàn).
PHP應(yīng)用--小結(jié)
PHP應(yīng)用/**
?* 接口
?* 1. 接口的基本概念和基本使用辦法
?* 2. 接口里面的辦法沒(méi)有具體的實(shí)現(xiàn)
?* 3. 實(shí)現(xiàn)了某個(gè)接口的類必須提供接口中定義的辦法
?* 4. 不能用接口創(chuàng)建對(duì)象,但是能夠判斷某個(gè)對(duì)象是否實(shí)現(xiàn)了某個(gè)接口
?* 5. 接口可以繼承接口(interface extends interface)
?* 6. 接口中定義的所有辦法都必須是公有,這是接口的特性.
?*/
PHP應(yīng)用aaaaaaaaaaaaaa
PHP應(yīng)用bu xiang xie le....................
PHP應(yīng)用ming tian yao ge ..............
PHP應(yīng)用以上內(nèi)容是小編給年夜家介紹的PHP面向?qū)ο笤斀?三),希望年夜家喜歡.
《PHP應(yīng)用:PHP面向?qū)ο笤斀猓ㄈ肥欠駥?duì)您有啟發(fā),歡迎查看更多與《PHP應(yīng)用:PHP面向?qū)ο笤斀猓ㄈ废嚓P(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/8311.html