php学习笔记之面向对象 |
本文标签:php,面向对象 public 公有的:本类,子类,外部对象都可以调用 1)封闭性 封闭性,也可以称为信息隐藏 。就是将一个类的使用和实现分开,只保留有限的接口(方法)与外部联系 。对于用到该类的开发人员,只要知道这个类如何使用即可,而不用去关心这个类是如何实现的 。这样做可以让开发人员更好地把精力集中起来专注别的事情,同时也避免了程序之间的相互依赖而带来的不便 。 2)继承性 继承性就是派生类(子类)自动继承一个或多个基类(父类)中的属性与方法,并可以重写或添加新的属性和方法 。继承这个特性简化了对象和类的创建,增加了代码的可重性 。继承分单继承和多继承,PHP所支持的是单继承,也就是说,一个子类有且只有一个父类 。 3)多态性 多态性是指同一个类的不同对象,使用同一个方法可以获得不同的结果,这种技术称为多态性 。多态性增强了软件的灵活性和重用性 。 类的定义 一个类可以包含有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”) 。 复制代码 代码如下: <?php Class myobject{ //…… } ?> 定义:物以类聚,把具有相似特性的对象归到一个类中,类定义了这些相似对象拥有的相同属性和方法 。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型 。 类的对象称为类的一个实例 。要创建一个类的实例,必须使用 new 关键字 。 复制代码 代码如下: <?php //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //定义方法 //对象中的属性成员可以通过"->"符号来访问 //对象中的成员方法可以通过"->"符号来访问 成员方法 类中的函数被称为成员方法 。函数和成员方法唯一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分 。 复制代码 代码如下: <?php classmyobject{ function getobjectname($name){ echo "商品名称为:".$name; } } ?> 该方法的作用是输出商品名称,商品名称是通过方法的参数传进来的 。 类常量 构造函数 PHP 5 允行开发者在一个类中定义一个方法作为构造函数 。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作 。 复制代码 代码如下: <?php //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //构造函数,在对象被实例化的时候自动调用 //定义方法 //对象中的属性成员可以通过"->"符号来访问 //对象中的成员方法可以通过"->"符号来访问 //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数 析构函数 复制代码 代码如下: <?php //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //构造函数,在对象被实例化的时候自动调用 function __construct($name,$height,$weight,$team){ echo "It is an NbaPlayer constructor\n"; $this->name = $name; //$this是PHP里面的伪变量,表示对象自身 。可以通过$this->的方式访问对象的属性和方法 $this->height = $height; $this->weight = $weight; $this->team = $team; } //析构函数,在程序执行结束的时候会自动调用 //析构函数通常被用于清理程序使用的资源 。比如程序使用了打印机,那么可以再析构函数里面释放打印机资源 function __destruct(){ echo "Destroying".$this->name."\n"; } //定义方法 public function run(){ echo "Running\n"; } public function dribblr(){ echo "Dribbling\n"; } public function pass(){ echo "Passing\n"; } } //类到对象的实例化 //类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号 $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull"); //对象中的属性成员可以通过"->"符号来访问 echo $jordan->name."\n"; //对象中的成员方法可以通过"->"符号来访问 $jordan->dribble(); $jordan->run(); //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数 $james = new NbaPlayer("James","203cm","120kg","Heat") echo $james->name."\n"; //通过把变量设为null,可以触发析构函数的调用 //当对象不再使用的时候会触发析构函数 $james = null; echo "from now on James will not be used.\n" ?> 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行 。 对象的引用 复制代码 代码如下: <?php //类的定义以关键字class开始,类的命名通常以每个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //构造函数,在对象被实例化的时候自动调用 //析构函数,在程序执行结束的时候会自动调用 //定义方法 //对象中的属性成员可以通过"->"符号来访问 //对象中的成员方法可以通过"->"符号来访问 //每一次用new实例化对象的时候,都会用类名后面的参数列表调用构造函数 //对象的引用用于访问对象的属性和方法,$james,$james1和$james2都是对象的引用 $james = null; |