成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? 一步一步學習PHP(6) 面向對象
全站頭部文字 我要出現在這里
一步一步學習PHP(6) 面向對象 803 2023-12-09   

但是我們知道,面向對象有三大特征:繼承,多態和封裝。

1. 繼承

我們繼續上一節中的例子,在PHP中,繼承和Java是一樣的,都使用extends關鍵字。

class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
}
class Student extends People
{
private $grade;
public function SayHello()
{
echo("Good Morning,".parent::GetName());
}
}

在這里,我們需要主要的還有我們訪問父類在C# 中用base,在Java中用super,但是在PHP中,我們用parent關鍵字。

如果我們要訪問自身的方法,那么可以用this,也可以用self。

class Student extends People
{
public function GetName()
{
return "kym";
}
private $grade;
public function SayHello()
{
echo("Good Morning,".self::GetName());
//echo("Good Morning,".$this->GetName());
}
}

2. 抽象類

提到繼承,就不得不說抽象類。

<?php
abstract class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
abstract function SayHello();
}
class Student extends People
{
public function SayHello()
{
echo("Good Morning,".parent::GetName());
}
}
$s=new Student();
$s->SetName("kym");
$s->SayHello();
?>

3. 接口

接下來就是接口:

<?php
abstract class People
{
private $name;
public function GetName()
{
return $this->name;
}
public function SetName($name)
{
$this->name=$name;
}
abstract function SayHello();
}
interface IRun
{
function Run();
}
class Student extends People implements IRun
{
public function SayHello()
{
echo("Good Morning,".parent::GetName());
}
public function Run()
{
echo("兩條腿跑");
}
}
$s=new Student();
$s->SetName("kym");
$s->SayHello();
$s->Run();
?>

都沒什么好說的,跟Java一模一樣。

4. 構造方法

一直忘了說構造方法,其實也就是一段同樣的代碼:

<?php
class Person
{
private $name;
private $age;
public function Person($name,$age)
{
$this->name=$name;
$this->age=$age;
}
public function SayHello()
{
echo("Hello,My name is ".$this->name.".I'm ".$this->age);
}
}
$p=new Person("kym",22);
$p->SayHello();
?>

我們在面試中也許經常會遇到一種變態的題型,就是若干個類之間的關系,然后構造函數呀什么的調來調去。但是,在PHP中就不會遇到這樣的情況了,因為在PHP中并不支持構造函數鏈,也就是說,在你初始化子類的時候,他不會自動去調用父類的構造方法。

<?php
class Person
{
private $name;
private $age;
public function Person($name,$age)
{
$this->name=$name;
$this->age=$age;
}
public function SayHello()
{
echo("Hello,My name is ".$this->name.".I'm ".$this->age);
}
}
class Student extends Person
{
private $score;
public function Student($name,$age,$score)
{
$this->Person($name,$age);
$this->score=$score;
}
public function Introduce()
{
parent::SayHello();
echo(".In this exam,I got ".$this->score);
}
}

$s=new Student("kym",22,120);
$s->Introduce();
?>

5. 析構函數

析構函數和C#和C++中不同,在PHP中,析構函數的名稱是__destructor()。

class Student extends Person
{
private $score;
public function Student($name,$age,$score)
{
$this->Person($name,$age);
$this->score=$score;
}
public function Introduce()
{
parent::SayHello();
echo(".In this exam,I got ".$this->score);
}
function __destruct()
{
echo("我要被卸載了");
}
}

6. 多態

由于默認參數的存在,以及PHP的弱類型,使得編譯時多態(也就是由于參數個數以及類型不同而造成的多態)無法實現,但是運行時多態在上文中已有提及。不再贅述。

主站蜘蛛池模板: 电影《此时此刻》| 鬼龙院花子的一生| 韩国女大学生电影| 王菲电影| 爱欲1990未删减版播放| 谍之心| 杨子姗赵又廷演的电影叫什么| 重点监管的危险化工工艺| 护航 电影| 开心鬼救开心鬼| 亲吻姐姐ova| 六扇门电影免费观看| 雪肌夜叉| 婴儿几个月添加辅食最好| 欧美17p| 浪人电影在线观看完整版免费| 恶搞之家有几季| 徐若晗个人简历| 我的冠军男友在线看全集完整| 浙江卫视节目回放入口| 春天的芭蕾歌词| 暗夜幕后在线观看完整版| 变形金刚7免费高清电影| 猛鬼差馆 电影| 韩国伦理片在线播放| 人总要有点爱好,生活才能继续 | ktv视频| 法国地图| 电视剧狂飙演员名单| 消防知识竞赛题库及答案| 杰深斯坦森全部电影| 维京人电影| 小强升职记| 久久日韩成人影院绝色| 降魔的| xxxxxxxxxxxxxxxxx69| 科洛弗| 海豹w| 西部往事 电影| 邓为个人资料简介及家世| 超级方程式|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103