public 公有的:本类,子类,外部对象均可以调用 protected 受保护的:本类 子类,能够执行,外部对象不能够调用 private 私有的:只能本类执行,子类与外部对象都不可调用
封闭性,也能够称为信息隐藏。就是将一个类的使用和实现分开,只保留有限的接口(方法)与外部联系。对于用到该类的开发人员,只要知道这个类如何使用便可,而不用去关心这个类是如何实现的。这样作可让开发人员更好地把精力集中起来专一别的事情,同时也避免了程序之间的相互依赖而带来的不便。php
继承性就是派生类(子类)自动继承一个或多个基类(父类)中的属性与方法,并能够重写或添加新的属性和方法。继承这个特性简化了对象和类的建立,增长了代码的可重性。继承分单继承和多继承,PHP所支持的是单继承,也就是说,一个子类有且只有一个父类。编程
多态性是指同一个类的不一样对象,使用同一个方法能够得到不一样的结果,这种技术称为多态性。多态性加强了软件的灵活性和重用性。数组
一个类能够包含有属于本身的常量,变量(称为“属性”)以及函数(称为“方法”)。
和不少面向对象的语言同样,PHP
也是经过class
关键字加类名来定义类的。类的格式以下:函数
<?php Class myobject{ //…… } ?>
定义:物以类聚,把具备类似特性的对象归到一个类中,类定义了这些类似对象拥有的相同属性和方法。类是类似对象的描述,称为类的定义,是该类对象的蓝图或原型。this
类的对象称为类的一个实例。要建立一个类的实例,必须使用 new
关键字。spa
<?php //类的定义以关键字class开始,类的命名一般以每一个单词第一个字母大写 class NbaPlayer{ public $name = "Jordan"; //定义属性 public $height = "198cm"; public $team = "Bull"; public $playerNumber = "23"; //定义方法 public function run(){ echo "Running\n"; } public function dribblr(){ echo "Dribbling\n"; } public function pass(){ echo "Passing\n"; } } //类到对象的实例化 //类的实例化为对象时使用关键字new,new以后紧跟类的名称和一对括号 $jordan = new NbaPlayer(); //对象中的属性成员能够经过"->"符号来访问 echo $jordan->name."\n"; //对象中的成员方法能够经过"->"符号来访问 $jordan->dribble(); $jordan->run(); ?>
=> 是数组成员访问符号 -> 是对象成员访问符号
类中的函数被称为成员方法。函数和成员方法惟一的区别就是,函数实现的是某个独立的功能,而成员方法是实现类中的一个行为,是类的一部分。
下面就来扩充上面的myobject
类,为它添加一个成员方法,代码以下:code
<?php classmyobject{ function getobjectname($name){ echo "商品名称为:".$name; } } ?>
该方法的做用是输出商品名称,商品名称是经过方法的参数传进来的。
类是一个抽象的描述,是功能类似的一组对象的集合。若是想用到类中的方法和变量,首先就要把它具体落实到一个实体,也就是对象上。对象
既然有变量,固然也会有常量了。常量就是不会改变的量,是一个恒值。众所周知的一个常量就是圆周率Pi。定义常量使用关键字const
如:blog
<?php class Computer{ const PI = 3.14159; } echo Computer::PI; ?>
双冒号::
是用来调用类中静态的属性和方法的。继承
类名 :: 静态属性/方法名
PHP 5 允行开发者在一个类中定义一个方法做为构造函数。具备构造函数的类会在每次建立新对象时先调用此方法,因此很是适合在使用对象以前作一些初始化工做。
<?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; } //定义方法 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"; ?>
<?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"; //构造函数,在对象被实例化的时候自动调用 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"; //对象的引用用于访问对象的属性和方法,$james,$james1和$james2都是对象的引用 //$james和$james1是对象的两个独立引用 //$james2是$james的影子,使用对象的同一个引用,任何一个赋值为null至关于删除了同一个引用 $james1 = $james; $james2 = &$james $james = null; echo "from now on James will not be used.\n" ?>
有时候,可能须要建立供全部类实例共享的字段和方法,这些字段和方法与全部的类实
例有关,但不能由任何特定对象调用。
<meta charset="utf-8"> <?php class Computer{ private static $_count = 0; public static function run(){ self::$_count++;//双冒号和self不能有空格 } public static function getRun(){ return self::$_count; } } Computer::run(); echo Computer::getRun();//1 ?>