类属性和类方法之间的事

Original 2018-11-21 09:08:06 390
abstract:理解:类是一类事物的集合。例如人类,每个人就是一个对象,是人类的实例化成的一个对象。属性就是例如一个人的秘密,可能所有人都知道则是公共属性,只有几个人知道则是受保护的属性,只有自己知道则是私有属性。属性重载:如果使用一个不存在的属性,就会去自动调用类中预先定义好的某个方法以处理数据方法重载:如果使用一个不存在的方法,就会去自动调用类中预先定义好的某个方法以处理该行为知识点:类的声明:class C

理解:

类是一类事物的集合。例如人类,每个人就是一个对象,是人类的实例化成的一个对象。属性就是例如一个人的秘密,可能所有人都知道则是公共属性,只有几个人知道则是受保护的属性,只有自己知道则是私有属性。

属性重载:如果使用一个不存在的属性,就会去自动调用类中预先定义好的某个方法以处理数据

方法重载:如果使用一个不存在的方法,就会去自动调用类中预先定义好的某个方法以处理该行为

知识点:

类的声明:class ClassName{  }  类名首字母大写

使用new实例化类:$class = new ClassName();

使用extends继承:class Son extends Parent{  }      可以继承公共的、受保护的属性

类常量定义:const CONSTANT = 'value';        类常量获取:echo CONSTANT;(只能获取不能修改)

类内获取常量:self/static::CONSTANT;

属性重载:__set($name,$value)、__get($name)、__isset($name)、__unset($name)

方法重载:__cal($method,array,$args)、__callStatic($method,array,$args)

 * this是指向当前对象的指针   this是在实例化的时候来确定指向谁

 * self是指向当前类的指针    self是指向类本身,也就是self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量

 * parent是指向父类的指针    parent是指向父类的指针,一般我们使用parent来调用父类的构造函数

在类内外获取静态属性、静态方法、常量使用范围解析符(::):

 * 在类中使用关键字:self parent static (当前类的引用/别名)  self/static/parent::名称   parent是获取父类

 * 在类外直接使用类名:className      className::名称

类的构造方法__construct(),不调用自动执行,类中使用构造方法来传入每个子类不同的初始值,如果不传入但还不想出错,可以定义好默认值:

class Parent{    #父类

    public function __construct($name = '朱老师',$course = 'PHP')

    {

        $this->name = $name;

        $this->course = $course;

    }

}

class Son extends Parent{    #继承父类    }

$son = new Parent();    #使用默认值

$son = new Parent('王一博','跳舞');    #传入自己想用的值

#例子
sclass A{
    const MAIN = 'P20';
    public static $name = 'A store ';
    protected static function getName(){
        return self::$name;
    }
    public static function film($xx){
        return self::getName().' 主要给: '.$xx .'贴膜';
    }
}
class B{
    const MAIN = 'P10';
    const PHONE = 'honor 8';
    private $name = 'B store';
    public $price = 20;
    public function getName(){
        return __CLASS__.' 名称: '.$this->name;
    }
    public static function flim(){
        return __CLASS__.' 主推: '.self::MAIN;
    }
}
class C extends B {
    const MAIN = 'honor 9';
    public static $name = 'C store';
    public function __call($name, $arguments)
    {
        return call_user_func(['A','film'],self::MAIN);
    }
}
$shopc = new C();
echo '本店给 '.$shopc::PHONE.' 贴膜需要 '.$shopc->price.'元<br>';
echo '总店'.$shopc->getName() . ' // ' .$shopc::flim().'<br>';
echo '另家店'.$shopc->error().'<br>';


Correcting teacher:韦小宝Correction time:2018-11-20 15:12:43
Teacher's summary:嗯!写的很不错!代码完整!总结的也很不错!接下来要多多练习类哦!可以自己多封装几个类玩玩!

Release Notes

Popular Entries