php面向对象的概括图解,简单介绍PHP面向对象
面向對象編程的三特點: 封裝性,繼承性(PHP支持單繼承),多態性
PHP的一個類必須在一段代碼段中,即一個“”class?PhpClass{
public?$name;
public?function?toString(){
return?'PhpClass';
}
}
定義成員方法: ?[關鍵詞] function 方法名(){...}
訪問成員方法: 對象名->成員方法
定義成員變量: ?[關鍵字] 成員變量名
訪問成員變量: ?對象名->成員變量
關鍵字可以使用 public、private、protected、static和final中的任意一個
定義類常量: ? ? ?const 常量名
訪問類常量: ? ? 類名::常量名public?$name;
const?PI?=?3.1415926;???//?不能有修飾詞
public?function?toString(){
return?'PhpClass';
}
public?function?printPI(){
echo?PhpClass::PI.'
';??//?直接通過類名訪問
}
public?function?printName(){
echo?$this->name;???//?注意此處的寫法
}
}
$lycClass?=?new?PhpClass();
echo?$lycClass::PI.'
';?//?通過對象訪問
echo?PhpClass::PI.'
';
echo?$lycClass->toString().'
';
$lycClass->name?=?'Lyc';
$lycClass->printName();
構造方法和析構方法:
構造方法: 不寫會默認一個
void __construct([mixed args [,...]])下劃線為兩個
析構方法:
void __destruct(void)下劃線為兩個
php使用垃圾回收機制,不用 unset 函數析構方法也會自動被調用class?PhpClass{
public?$name;
//public?function?__construct(){}?PHP不支持?C++、java?形式上的方法重載
public?function?__construct($name){
$this->name?=?$name;
}
public?function?__destruct(){
echo?'析構一下...';
}
}
$lycClass?=?new?PhpClass('lyc');
echo?$lycClass->name;
//unset($lycClass);?不寫也會調用?__destruct()
繼承和多態
繼承:在PHP中子類可以繼承父類的所有public和protected修飾的成員變量和方法,包括構造方法。
聲明繼承的格式:
class subClass extendes superClass{
......
}
多態:(覆蓋和重載兩種,覆蓋和c++、java中重寫相同)
重載概念和c++、java中的重載概念相同,但實現方式不同,重載實例:class?PhpClass{
public?$nae;
//?PHP中有很多以兩個下劃線開頭的方法,被稱為魔術方法***********************
/*?__call()方法的作用是:?當程序試圖調用不存在或不可見的成員方法時
*?PHP會先調用__call()方法來存儲方法名及其參數。__call()方法包含
*?兩個參數,即方法名和方法參數。其中,方法參數是以數組形式存在的??*/
function?__call($name,?$arguments){
//?通過count($arguments)獲得參數個數
$argNum?=?count($arguments);
//echo?$argNum.'***************
';
if($name?==?'right'){???//?一下方法調用中的?$this->?不可省略
switch($argNum){
case?0:
$this->right0();
break;
case?1:
$this->right1($arguments[0]);
break;
case?2:
$this->right2($arguments[0],$arguments[1]);
break;
default:
echo?'參數可能多了,我不干了...
';
}
}else?if($name?==?'left'){
switch($argNum){
case?1:
$this->left1($arguments[0]);
break;
case?2:
$this->left2($arguments[0],$arguments[1]);
break;
default:
echo?'參數不對,我不干了...
';
}
}else{
echo?'什么也不做...';
}
}
//幾種實現重載的方法,方法名不相同
public?function?right0(){
echo?'right0
';
}
public?function?right1($arg){
echo?'right1?'.$arg.'
';
}
public?function?right2($arg1,$arg2){
echo?'right1?'.$arg1.'?'.$arg2.'
';
}
public?function?left0(){
echo?'left0
';
}
public?function?left1($arg){
echo?'left1?'.$arg.'
';
}
public?function?left2($arg1,$arg2){
echo?'left1?'.$arg1.'?'.$arg2.'
';
}
}
$lyc?=?new?PhpClass();
$lyc->left();???????????//?此處實現重載
$lyc->left('LEFT');
$lyc->left('LEFT','LYC');
$lyc->right();
$lyc->right('RIGHT');
$lyc->right(123,'LYC');
$lyc->right(123,'lyc','right');
總結
以上是生活随笔為你收集整理的php面向对象的概括图解,简单介绍PHP面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 获取当前url hash,htt
- 下一篇: 动态规划算法php,php算法学习之动态