• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP 类与对象 全解析( 二)

php 搞代码 3年前 (2022-01-23) 13次浏览 已收录 0个评论

目录

PHP 类与对象 全解析( 一)

PHP 类与对象 全解析( 二)

PHP 类与对象 全解析(三 )

7.Static关键字

声明类成员或方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。

静态成员属于类,不属于任何对象实例,但类的对象实例都能共享。
小结:

在类内部访问静态成员属性或者方法,使用 self::(没有 $ 符号),如:
self:: $country //类内部访问静态成员属性
self:: myCountry()
在子类访问父类静态成员属性或方法,使用 parent::(没有 $ 符号),如:
parent:: $country
parent:: myCountry()
外部访问静态成员属性和方法为 类名/子类名:: ,如:
Person::$country
Person::myCountry()
Student::$country
但静态方法也可以通过普通对象的方式访问

    <?php            Class Person{          // 定义静态成员属性          public static $country = "中国";          // 定义静态成员方法          public static function myCountry() {              // 内部访问静态成员属性              echo "我是".self::$country."人<br />";          }      }      class Student extends Person {          function study() {              echo "我是". parent::$country."人<br />";          }      }      // 输出成员属性值      echo Person::$country."<br />";     // 输出:中国      $p1 = new Person();      //echo $p1->country;            // 错误写法      // 访问静态成员方法      Person::myCountry();            // 输出:我是中国人      // 静态方法也可通过对象访问:      $p1->myCountry();            // 子类中输出成员属性值      echo Student::$country."<br />";    // 输出:中国      $t1 = new Student();      $t1->study();   <div>)本文来源gaodai.ma#com搞#代!码网_</div><strong>搞代gaodaima码</strong>        // 输出:我是中国人            ?>  

—————————————————

8.抽象类 PHP5支持抽象类和抽象方法。

抽象类不能直接被实例化,你必须先继承该抽象类,然后再实例化子类。
抽象类中 至少要包含一个抽象方法。如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现。
继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法;
另外,这些方法的可见性 必须和抽象类中一样(或者更为宽松)。
如果抽象类中某个抽象方法被声明为protected,那么子类中实现的方法就应该声明为protected或者public,而不 能定义为private。
//抽象方法:abstract protected function getValue();
例子1

    abstract class AbstractClass{          // 定义抽象方法          abstract protected function getValue();          // 普通方法          public function printOut(){              print $this->getValue()."<br />";          }      }      class ConcreteClass extends AbstractClass{          protected function getValue(){              return "abstract ";//抽象方法的实现          }      }            $class1 = new ConcreteClass;      $class1->printOut();  

例子2

    abstract class AbstractClass      {       // 强制要求子类定义这些方法          abstract protected function getValue();          abstract protected function prefixValue($prefix);                // 普通方法(非抽象方法)          public function printOut() {              print $this->getValue() . "\n";          }      }            class ConcreteClass1 extends AbstractClass      {          protected function getValue() {              return "ConcreteClass1";          }                public function prefixValue($prefix) {              return "{$prefix}ConcreteClass1";          }      }            class ConcreteClass2 extends AbstractClass      {          public function getValue() {              return "ConcreteClass2";          }                public function prefixValue($prefix) {              return "{$prefix}ConcreteClass2";          }      }            $class1 = new ConcreteClass1;      $class1->printOut();      echo $class1->prefixValue('FOO_') ."\n";            $class2 = new ConcreteClass2;      $class2->printOut();      echo $class2->prefixValue('FOO_') ."\n";  


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP 类与对象 全解析( 二)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址