【关键字】
1、final
① final修饰的类为最终类,不能被继承!!
② final修饰的方法为最终方法,不能够被重写
③ final不能修饰属性!!
2、static
① 可以修饰属性和方法称为静态属性和静态方法,也叫类属性和类方法
static public $name;
static function func(){}
② 静态属性,静态方法,只能使用类名调用
Person::#name;Person::func();
③ 静态属性和方法,在类第一个装载时声明,会先于对象产生(成员属性和方法在对象实例化时声明)。
④ 在静态方法中,不能调用非静态属性和方法;
在非静态方法中,可以调用静态属性和方法;
(因为静态属性和方法在类装载时声明,此时还没有对象,更没有成员属性
⑤ 在类中,可以使用self关键字代指本类声明
class public{
static public $name;
function say(){
`echo self::$name;√
`echo Person::$name;√
}
}
echo Person::$name;
⑥ 静态属性是共享的。也就是new很多对象也是共用一个属性。
3、const
① 在类中,声明常量不能使用define()函数,而且必须使用construction关键字!!
const COUNT = "16亿";
② const声明的常量,依然要求必须全部大写,而且不能使用$符号!!!
③ 常量一点声明不能改变!!与static相同只能使用类名调用!!!
echo Person::COUNT;
4、instanceof 操作符
检查一个对象是否是一个类的实例!!(包括父类,父类的父类。。。。。)
var_dump($s instanceof Student);√
var_dump($s instanceof Person);√
【小总结】几种常用的操作符
1、 . 只能连接字符串的作用。 "".""
2、 => 声明数组时,进行键值关联。 ["key"=>"value"];
3、 -> 使用对象调用成员属性和方法时 。$zhangsan -> name; $this->name;
4、 :: ①使用类名调用静态属性和方法时。 Person::$name;self::$name;
使用类名调用常量。 Person::COUNT;
②使用parent调用父类已有同名方法时。 parent::say();
[图片]
[单例模式]
单例模式也叫单态模式,可以保证一个类只能有一个对象实例
实现思路:
① 构造函数私有化,不允许使用new关键字拿到实例化对象
② 所以需要对外提供一个方法,在方法中,判断内存是否已经有这个对象了,如果为空则创建一个新对象返回,如果不为空则直接返回
③ 由于类外无法拿到对象,所以要调用方法必须使用类名。n那么方法就必须是静态方法
④ 由于方法是静态方法,静态方法中不能使用非静态属性,所以属性必须是静态属性
⑤ 全部完成后,在类外面可以直接使用我们提供的静态方法,获得为一对象:
Person::getSingle();