php中的面向对象实践
基本实践
高级实践
特殊实践
类的概念
实例化的概念
构造函数
析构函数
数据访问
对象引用的概念
类的概念
对象编程——基本实践day 2>
类
? 物以类聚,把具有相似特性的对象归类到一个类中
? 类定义了这些相似对象拥有的相同的属性和方法
? 类是相似对象的描述,称为类的定义,是该类对象的蓝图或者原型
? 类的对象称为类的一个实例(instance) //类画了一个框架,对象把框架塞满
? 类的属性和方法统称为类成员
例子
? nba球员就是一个类的定义(class definition)
? 乔丹、詹姆斯、科比称为类的实例(instance)
nba球员
+姓名
+身高
+体重
+所在球队
+球员号码
------------
+跑步()
+跳跃()
+运球()
+投篮()
+扣篮()
+传球()
类的实例化(instantiate)
对象编程——基本实践day 2>
对象编程——基本实践day 2>
案例
类和类的实例化案例
? 如何定义一个类
? 如何实例化类的对象
? 如何调用类的方法
? 构造函数
? 析构函数
符号来访问echo $jordan->name.\n;//对象中的成员方法可以通过->符号来访问$jordan->dribble();$jordan->pass();?>
output:
jordan
dribbling
passing
构造函数name=$name; //$this是php里的伪变量,表示对象自身。可以通过$this->的方法访问对象的属性和方法 $this->height=$height; $this->weight=$weight; $this->team=$team; $this->playernumber=$playernumber; } //定义方法 public function run(){ echo running\n; } public function jump(){ echo jumping\n; } public function dribble(){ echo dribbling\n; } public function shoot(){ echo shooting\n; } public function dunk(){ echo dunking\n; } public function pass(){ echo passing\n; }}//类到对象的实例化//类的实例化为对象时使用关键字new,new之后紧跟这类的名称和一对括号$jordan = new nbaplayer(jordan,198cm,98kg,bull,23);//对象中的属性成员可以通过->符号来访问echo $jordan->name.\n;//对象中的成员方法可以通过->符号来访问$jordan->dribble();$jordan->pass();//每一次用new实例化对象的时候,都会用类名后面的参数列比调用构造函数$james= new nbaplayer(james,203cm,120kg,heat,6);echo $james->name;echo $james->height;echo $james->weight;echo $james->team;echo $james->playernumber;?>
output:
in nbaplayer constructor
jordan
dribbling
passing
in nbaplayer constructor
james
203cm
120kg
heat
6
析构函数
name=$name; //$this是php里的伪变量,表示对象自身。可以通过$this->的方法访问对象的属性和方法 $this->height=$height; $this->weight=$weight; $this->team=$team; $this->playernumber=$playernumber; } //析构函数,在程序执行结束的时候会自动调用 //析构函数通常被用于清理程序使用的资源,比如程序使用了打印机,那么可以在析构函数里面释放打印机资源。 function __destruct(){ echo destroying .$this->name.
; } //定义方法 public function run(){ echo running\n; } public function jump(){ echo jumping\n; } public function dribble(){ echo dribbling\n; } public function shoot(){ echo shooting\n; } public function dunk(){ echo dunking\n; } public function pass(){ echo passing\n; }}//类到对象的实例化//类的实例化为对象时使用关键字new,new之后紧跟这类的名称和一对括号$jordan = new nbaplayer(jordan,198cm,98kg,bull,23);//对象中的属性成员可以通过->符号来访问echo $jordan->name.\n;//对象中的成员方法可以通过->符号来访问$jordan->dribble();$jordan->pass();//每一次用new实例化对象的时候,都会用类名后面的参数列比调用构造函数$james= new nbaplayer(james,203cm,120kg,heat,6);echo $james->name;//通过把变量设置为null,可以触发析构函数的调用$james=null;echo from now on james will not be used.
;?>
output:
in nbaplayer constructor
jordan
dribbling
passing
in nbaplayer constructor
james
destroying james
from now on james will not be used.
destroying jordan
对象引用的基本概念
对象引用赋值
对象编程——基本实践day 2>
詹姆斯是一个对象。
$james就是对象的引用,直接指向詹姆斯这个对象。
$james1和$james是两个独立的引用,$james1这个对象的引用直接指向詹姆斯这个对象。
$james2是一个指向$james这个对象引用的对象引用(有点拗口),没有直接指向詹姆斯这个对象。$james2是通过$james这个对象引用去指向詹姆斯这个对象的
现在直接指向对象詹姆斯的对象的引用有两个,即$james和$james1。而$james2是$james的映像。
示例一:
name=$name; //$this是php里的伪变量,表示对象自身。可以通过$this->的方法访问对象的属性和方法 $this->height=$height; $this->weight=$weight; $this->team=$team; $this->playernumber=$playernumber; } //析构函数,在程序执行结束的时候会自动调用 //析构函数通常被用于清理程序使用的资源,比如程序使用了打印机,那么可以在析构函数里面释放打印机资源。 function __destruct(){ echo destroying .$this->name.
; } //定义方法 public function run(){ echo running\n; } public function jump(){ echo jumping\n; } public function dribble(){ echo dribbling\n; } public function shoot(){ echo shooting\n; } public function dunk(){ echo dunking\n; } public function pass(){ echo passing\n; }}//类到对象的实例化//类的实例化为对象时使用关键字new,new之后紧跟这类的名称和一对括号$jordan = new nbaplayer(jordan,198cm,98kg,bull,23);//对象中的属性成员可以通过->符号来访问echo $jordan->name.\n;//对象中的成员方法可以通过->符号来访问$jordan->dribble();$jordan->pass();//每一次用new实例化对象的时候,都会用类名后面的参数列比调用构造函数$james= new nbaplayer(james,203cm,120kg,heat,6);echo $james->name;//通过把变量设置为null,可以触发析构函数的调用//当对象不会再被使用的时候,会触发析构函数//james1也是指向new nbaplayer();$james1=$james; $james=null;echo from now on james will not be used.
;?>
output:
in nbaplayer constructor
jordan
dribbling
passing
in nbaplayer constructor
james
from now on james will not be used.
destroying james
destroying jordan
示例二:
name=$name; //$this是php里的伪变量,表示对象自身。可以通过$this->的方法访问对象的属性和方法 $this->height=$height; $this->weight=$weight; $this->team=$team; $this->playernumber=$playernumber; } //析构函数,在程序执行结束的时候会自动调用 //析构函数通常被用于清理程序使用的资源,比如程序使用了打印机,那么可以在析构函数里面释放打印机资源。 function __destruct(){ echo destroying .$this->name.
; } //定义方法 public function run(){ echo running\n; } public function jump(){ echo jumping\n; } public function dribble(){ echo dribbling\n; } public function shoot(){ echo shooting\n; } public function dunk(){ echo dunking\n; } public function pass(){ echo passing\n; }}//类到对象的实例化//类的实例化为对象时使用关键字new,new之后紧跟这类的名称和一对括号$jordan = new nbaplayer(jordan,198cm,98kg,bull,23);//对象中的属性成员可以通过->符号来访问echo $jordan->name.\n;//对象中的成员方法可以通过->符号来访问$jordan->dribble();$jordan->pass();//每一次用new实例化对象的时候,都会用类名后面的参数列比调用构造函数$james= new nbaplayer(james,203cm,120kg,heat,6);echo $james->name;//通过把变量设置为null,可以触发析构函数的调用//当对象不会再被使用的时候,会触发析构函数//james1也是指向new nbaplayer();$james1=$james; //$james1直接指向詹姆斯$james2=&james; //$james2相当于$james的影子,指向$james, $james再指向詹姆斯$james=null; //不需要再次设置$james2=null,因为他俩的效果是一样的$james1=null; //任何一个赋值为null相当于删除了一个对象的引用echo from now on james will not be used.
;?>
output:
in nbaplayer constructor
jordan
dribbling
passing
in nbaplayer constructor
james
destroying james
from now on james will not be used.
destroying jordan
以上就介绍了php面向对象编程——基本实践day 2,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。