zoukankan      html  css  js  c++  java
  • PHP 面向对象

    详见http://www.php.cn/php/php-oop.html

    • 对象 − 是类的实例。

    • 成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。

    • 成员函数 − 定义在类的内部,可用于访问对象的数据。

    • 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

    • 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。

    • 子类 − 一个类继承其他类称为子类,也可称为派生类。

    • 多态 − 多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

    • 重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

    • 抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。

    • 封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。

    • 构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。

    • 析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

    • 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。

      PHP 5 允行开发者在一个类中定义一个方法作为构造函数,语法格式如下:

      void __construct ([ mixed $args [, $... ]] )

      在上面的例子中我们就可以通过构造方法来初始化 $url 和 $title 变量:

      function __construct( $par1, $par2 ) {
         $this->url = $par1;
         $this->title = $par2;
      }
    • 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。

      PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,其语法格式如下:

      void __destruct ( void )
      <?php
      class MyDestructableClass {
         function __construct() {
             print "构造函数 ";
             $this->name = "MyDestructableClass";
         }

      PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承,格式如下:

      class Child extends Parent {
         // 代码部分
      }

      实例中 Child_Site 类继承了 Site 类,并扩展了功能:

      <?php 
      // 子类扩展站点类别
      class Child_Site extends Site {
         var $category;

      function setCate($par){
      $this->category = $par;
      }

      function getCate(){
      echo $this->category . PHP_EOL;
      }
      }


         function __destruct() {
             print "销毁 " . $this->name . " ";
         }
      }

      $obj = new MyDestructableClass();
      ?>

      执行以上代码,输出结果为:

      构造函数
      销毁 MyDestructableClass

      如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

      实例中重写了 getUrl 与 getTitle 方法:

      function getUrl() {
         echo $this->url . PHP_EOL;
         return $this->url;
      }

      function getTitle(){
         echo $this->title . PHP_EOL;
         return $this->title;
      }

      访问控制

      PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。

      • public(公有):公有的类成员可以在任何地方被访问。

      • protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。

      • private(私有):私有的类成员则只能被其定义所在的类访问。

      • 接口

        使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

        接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

        接口中定义的所有方法都必须是公有,这是接口的特性。

        要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

        <?php

        // 声明一个'iTemplate'接口
        interface iTemplate
        {
            public function setVariable($name, $var);
            public function getHtml($template);
        }


        // 实现接口
        class Template implements iTemplate
        {
            private $vars = array();

            public function setVariable($name, $var)
            {
                $this->vars[$name] = $var;
            }

            public function getHtml($template)
            {
                foreach($this->vars as $name => $value) {
                    $template = str_replace('{' . $name . '}', $value, $template);
                }

                return $template;
            }
        }
  • 相关阅读:
    LeetCode Flatten Binary Tree to Linked List
    LeetCode Longest Common Prefix
    LeetCode Trapping Rain Water
    LeetCode Add Binary
    LeetCode Subsets
    LeetCode Palindrome Number
    LeetCode Count and Say
    LeetCode Valid Parentheses
    LeetCode Length of Last Word
    LeetCode Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/alexguoyihao/p/9090527.html
Copyright © 2011-2022 走看看