• php面向对象编程学习之高级特性


      前几天写了一篇关于php面向对象基础知识的博客,这两天看了php面向对象的高级特性,写出来记录一下吧,方便以后拿出来复习。

      面向对象除了最基本的定义类之外,最主要就是因为面向的一些高级特性,运用这些高级特性,我们可以写出更加合理优雅的代码(ps:上述官方语言都是在网上摘抄,由于没有多少面向对象编程的经验,自己仅仅是记录自己的学习心得)。闲话扯完,接下来说说面向对象。

    (1)静态方法和属性:

      在面向对象的基础中,我们对类中属性的访问几乎都是首先进行类的实例化,得到实例化后的对象,通过对象进行访问。其实在面向对象中,也不仅仅只能通过对象访问类的属性,还可以通过类访问属性 ,这样的属性和方法就是“静态的”,必须用static关键字来声明。

     1 class StaticExample{ 
     3static public $num=0; 
     5static public function sayHello(){
     7     ​    ​print "hello world!"; 
     9     ​} 
    11 }

    静态方法可以不能访问这个类的普通属性,因为那些属性属于一个对象(通俗说就是普通属性在对象中有效),静态方法可以访问静态属性。一个实例化的对象可以访问静态方法,但不可以访问静态属性。所以,通过类访问静态元素时使用::(两个英文冒号)来连接类名和属性或类名和方法。

    1 print StaticExample::$num;
    2 StaticExample::sayHello();​

    通过上面这种访问方式,就可以将类的静态属性$num打印出来。上面这种方式是在类的外部访问静态属性和静态方法时的做法。既然这样,那如何在类的内部访问静态属性和静态方法呢?php给出了一个关键字self,self关键字指向当前类,与$this不同,$this代表的是当前对象。

     1 <?php
     2 class StaticExample{
     3         static public $num=0;
     4         static public function say(){
     5                 self::$num++;
     6                 var_dump(self::$num);
     7         }
     8 }
     9 $staticExam=new StaticExample();
    10 $staticExam->say();
    11 ?>

    输出结果为int(1)。

    (2)常量属性:

      常量属性,顾名思义就是设置后不可改变的量,当一个可以访问的属性的值无需改变时,就应该使用常量。常量使用关键字const来声明,常量不以美元符号开头,通常使用大写字母来命名常量。可定义为常量的值只能是基本数据类型的值,只能通过类而不能通过类的实例(对象)来访问常量属性,引用常量时不需要用$符号,访问时通过“类名::常量”的形式访问。

    (3)抽象类:

      抽象类:一种不能被直接实例化的类,任何一个类,如果其中至少有一个方法被声明为抽象的,则这个类就必须被声明为抽象的,被定义为抽象的方法只是声明了其调用方式,不能有具体的功能实现。当继承一个抽象类的时候,子类必须定义父类中所有的抽象方法。这些方法在访问控制上至少要和父类一致(或者更为宽松)

  • 相关阅读:
    HTML5存储
    HTML5 地理位置定位(Geolocation)原理及应用
    HTML5多媒体组件的使用
    HTML5拖拽
    HTML5一些总结
    js高级程序设计--数据类型
    JS高级程序设计基本概念
    浏览器内核、渲染引擎、js引擎
    JS高级程序设计笔记之script标签
    CenOS7下安装 nginx
  • 原文地址:https://www.cnblogs.com/WuNaiHuaLuo/p/4817715.html
Copyright © 2020-2023  润新知