27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
拓展阅读:PHP的访问修饰符;public,private,protected修饰符
PHP除了访问修饰符外,还有方法修饰符
方法修饰符有三种,static、final、abstract
1. static修饰的属性叫静态属性、static修饰的方法叫静态方法
2. 静态成员加载类的时候分配空间,程序执行完毕后销毁
3. 静态成员在内存中就一份。
4. 静态修饰调用语法
类名::属性 类名::方法名()
案例1:静态方法
<?php class Person { public static $add='北京'; // 修饰符之间没有顺序 static public function show() { echo '这是一个静态的方法<br>'; } } echo Person::$add,'<br>'; //北京 Person::show(); //这是一个静态的方法
案例2:统计在线人数
<?php class Student { private static $num=0; //静态变量,在内存中就一份 public function __construct() { self::$num++; //self表示所在类的类名 } public function __destruct() { self::$num--; } public function show() { echo '总人数是:'.self::$num,'<br>'; } } //测试 $stu1=new Student; $stu2=new Student; $stu3=new Student; $stu2->show(); //总人数是:3 unset($stu2); $stu3->show(); //总人数是:2
注意:self表示所在类的类名,使用self降低耦合性
<?php class Person { public static $add='中国'; public static function show() { echo '这是人类<br>'; } } //继承 class Student extends Person { } //测试 echo Student::$add,'<br>'; //中国 通过子类名称访问父类的静态成员 Student::show(); //这是人类
拓展阅读:PHP类的继承
static也可表示当前对象所属的类
<?php class Person { public static $type='人类'; public function show1() { //var_dump($this); //object(Student)#1 (0) { } //echo self::$type,'<br>'; //人类 echo static::$type,'<br>'; //学生 延时绑定 } } class Student extends Person { public static $type='学生'; public function show2() { //var_dump($this); //object(Student)#1 (0) { } //echo self::$type,'<br>'; //学生 echo static::$type,'<br>'; //学生 } } //测试 $obj=new Student(); $obj->show1(); $obj->show2(); //结果 //学生 学生 //static表示当前对象所属的类
1、static在内存中就一份,在类加载的时候分配空间
2、如果有多个修饰符,修饰符之间是没有顺序的
3、self表示所在类的类名
4、static表示当前对象所属的类
5、static有两个作用,第一表示静态的,第二表示类名
final修饰的方法不能被重写
final修饰的类不能被继承
1、如果一个类确定不被继承,一个方法确定不会被重写,用final修饰可以提高执行效率。
2、如果一个方法不允许被其他类重写,可以用final修饰。
abstract修饰的方法是抽象方法,修饰的类是抽象类
只有方法的声明没有方法的实现称为抽象方法
一个类中只要有一个方法是抽象方法,这个类必须是抽象类。
抽象类的特点是不能被实例化
子类继承了抽象类,就必须重新实现父类的所有的抽象方法,否则不允许实例化
类中没有抽象方法也可以声明成抽象类,用来阻止类的实例化
案例:
<?php //抽象类 abstract class Person { public abstract function setInfo(); //抽象方法 public function getInfo() { echo '获取信息<br>'; } } //继承 class Student extends Person { //重写实现父类的抽象方法 public function setInfo() { echo '重新实现父类的抽象方法<br>'; } } //测试 $stu=new Student; $stu->setInfo(); //重新实现父类的抽象方法 $stu->getInfo(); //获取信息
1定义命名规范
2、阻止实例化,如果一个类中所有的方法都是静态方法,这时候没有必要去实例化,可以通过abstract来阻止来的实例化。
本站内容均为小米原创,转载请注明出处:小米技术社区>> PHP的方法修饰符static、final、abstract