zoukankan      html  css  js  c++  java
  • php类知识点滴---类的实例化,构造函数,继承初步

    • 实例化类----黑科技用法,通过字符串来实例化
    class coach
    {
        public function __construct()
        {
            echo "欢迎光临北武堂"."
    ";
        }
        public function slogan()
        {
            echo "吼吼~哈哈~"."
    ";
        }
    }
    $wenwa = 'coach';//字符串对应了coach类
    $duwa = new $wenwa;
    $duwa->slogan();
    • 构造函数
    <?php
    class mylove
    {
        public $name="陈培昌";
        public function __construct()
        {
            echo "喜欢练搏击的弟弟"."
    ";
        }
        public function showmyname()
        {
            echo "获取到的名字是:".$this->name."
    ";
        }
    }
    $cpc = new mylove();
    $cpc->showmyname();
    ?>

    结果:

      喜欢练搏击的弟弟
      获取到的名字是:陈培昌

    •  继承(与python不同,php是单一继承语言,也就是一个类只能有一个父类)
    父类代码如下:
    class coach
    {
        public $master = "老张";
        protected $lover = "丁大锅";
        private $lovegame = "SM";
        public function slogan()
        {
            echo "吼吼~哈哈~"."
    ";
        }
    }
    定义父类coach的子类cpc,继承使用关键词extends
    class cpc extends coach
    {
        public function __construct()
        {
            //$this->master = $master;
            echo "我的师父是".$this->master."__我爱".$this->lover."__喜欢玩"."
    ";
        }
    
        public function self_introduce($name,$age)
        {
    
            echo "hello~my name is ".$name."今年芳龄".$age."
    ";
        }
    }
    $cpc = new cpc();
    $cpc->slogan();
    输出结果:

    吼吼~哈哈~
    hello~my name is 陈培昌今年芳龄21

    点评:哇啊哦~这么厉害,子类cpc里没有定义slogan方法居然可以调用!正是继承的魔力之所在!
    •  $this详解
    在类的声明内部,$this用于指代对象本身;类的内部属性,可以通过$this->去掉$的属性名来访问,另外我们知道,
    在类的内部一些特殊修饰符修饰的属性,方法例如private,protected等,

    不能在外部访问(说通俗点,就是不能被实例化对象直接访问,调用),那么按照这种逻辑,$this代表了实例化对象,也不能直接访问
    but......现实很打脸
    <?php
    class mycoach
    {
    public $name="陈培昌";
    private $favorite = "喜欢丁大锅";
    public function __construct()
    {
    echo $this->name.$this->favorite.PHP_EOL;
    }
    public function __get($key)
    {
    return $this->$key;
    }
    public function __set($key,$value)
    {
    $this->$key = $value;
    }
    }
    $cpc = new mycoach();
    echo "通过魔术方法__get获取到的favorite属性".$cpc->favorite.PHP_EOL;
    $cpc->favorite="丁大锅送的手表";
    echo "通过魔术方法__set设置后的favorite属性".($cpc->favorite).PHP_EOL;
    ?>


    输出结果

    陈培昌喜欢丁大锅
    通过魔术方法__get获取到的favorite属性喜欢丁大锅
    通过魔术方法__set设置后的favorite属性丁大锅送的手表

     
    不过想想也不尽合理,如果$this也不能访问,大概魔术方法 __set(),和__get()也无从实现了
  • 相关阅读:
    旧键盘 (20)
    人口普查(20)
    打印沙漏(20)
    程序运行时间(15)
    反转链表 (25)
    科学计数法 (20)
    组个最小数 (20)
    python yield使用
    python如何优雅判断类型
    python中如何优雅使用import
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/10958253.html
Copyright © 2011-2022 走看看