• php面向对象 2


    继承
    概念:如果一个类有子类,那么该子类会继承父类的一切东西(私有成员访问不到)
    在定义子类的时候需要加一个关键字:extends
    特点:单继承,一个类只能有一个父类
    如果父类中有构造函数,子类在实例化的时候要按照父类构造函数的标准来实例化

    子类对父类方法的重写:在子类中写一个同样的方法
    final:用来修饰类,代表该类是一个最终类,该类无法被继承。

    class Info
    {
        public $code;
        protected $name;
        private $sex;
        function __construct($s) //构造函数
        {
            $this->sex = $s;
        }
    }
    class Test extends Info
    {
    }
    $t = new Test("女");
    $t->Code = "p001";
    var_dump($t);

    子类中调用父类的方法  parent::

    class Info
    {
        public $code;
        protected $name;
        private $sex;
        function Say()
        {
            echo "hello";
        }
    }
    class Test extends Info
    {
        function Say()
        {
            parent ::Say();       //调用父类的Say()方法
            echo "Test Say";
        }
    }
    $t = new Test();
    $t->say();

    静态成员
    类里面的普通成员是属于对象的,不是属于类的(调用的时候是用对象调用的)
    什么叫做静态成员:类静态成员是属于类的,不是属于每个对象的
    定义静态成员用static关键字
    静态方法里面无法调用普通成员
    静态方法可以调用静态成员,使用self关键字调用
    self代表该类,$this代表该对象

     1 class Info
     2 {
     3     public static $class;  //static关键字定义静态的
     4     public $code;
     5     protected $name;
     6     private $sex;
     7     static function Test()  //静态方法
     8     {
     9         self::$class;    //调用自身类里面的静态成员
    10         echo "静态方法!";
    11     }
    12     function Say()
    13     {
    14         echo self::$class;   //普通方法里面可以调用静态成员
    15         echo "hello";
    16     }
    17 }
    18 $r = new Ren();
    19 Info::$class = "0305";   //访问静态成员用 ::
    20 Info::Test();                   //调用静态方法

    const  n = 20;   //将某些类里面常用到的东西定义为一个常量,方便使用

    多态
    概念:当父类引用指向子类实例的时候,由于子类对父类函数进行了重写,导致我们在使用该引用相应的方法表现出的不同
    条件:

    1.必须有继承
    2.子类必须要对父类的方法重写

    函数重载
    条件:

    1.函数名必须相同
    2.函数里面参数的个数相同
    2.如果个数相同,类型不同

    __tostring()方法

     1 class Ren
     2 {
     3     public $name;
     4     public $sex;
     5     function __tostring()   //可以输出类的一些描述
     6     {
     7         return "这个对象包含name和sex,一个Say方法";
     8     }
     9 }
    10 $r = new Ren();
    11 echo $r;

    对象的克隆

    1 $r->name = "张三";
    2 $r1 = clone $r;     //克隆对象
    3 echo $r->name;

    克隆对象,然后修改内容

    class Ren
    {
        public $name;
        public $sex;
        function __clone()   //对象克隆的时候自动执行
        {
            $this->name = "李四";  //$this指复本(克隆出来的新对象)
        }
    }
    $r = new Ren();
    $r->name = "张三";
    $r1 = clone $r; //克隆对象
    echo $r->name;   //输出内容为“张三”
    echo $r1->name; //输出内容为“李四”
  • 相关阅读:
    Spring MVC — @RequestMapping原理讲解-1
    搭建一个SVN
    WebService远程调用技术
    Linux命令的复习总结学习
    电商-购物车总结
    单点登录系统---SSO
    JAVA的设计模式之观察者模式----结合ActiveMQ消息队列说明
    23种设计模式
    使用netty实现的tcp通讯中如何实现同步返回
    rabbitmq集群安装
  • 原文地址:https://www.cnblogs.com/zk0533/p/5442920.html
Copyright © 2020-2023  润新知