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:嗯!写的很不错!代码完整!总结的也很不错!接下来要多多练习类哦!可以自己多封装几个类玩玩!