1. instanceof 关键字
instanceof操作符,用于检测当前对象实例是否属于某一个类的类型。
class Person {
}
class Student extends Person{
}
$p = new Person();
if($p instanceof Person){
echo "p属于Person类型";//会进入
}
$s = new Student();
if($s instanceof Student){
echo "s属于Student类型";//会进入
}
if($s instanceof Person){
echo "s也属于Person类型";//也会进入
}
2.final关键字
在java中final定义常量,但是在PHP中final不用来定义常量
final不能用来使用修饰类的成员属性
final用来修饰类,这个类不能去扩展,也就是不能有子类来继承它,就是不让别人来扩展这个类的时候就使用final来修饰这个类class
final用来修饰类的成员方法,这个方法,就不能在子类中覆盖,也就是这个方法不能在子类中重写这个方法
final class Person {
}
class Student extendss Person{//不可行,因为Person用final修饰,不允许有子类继承它
}
final class Person{
final function say{
}
}
class Student extends Person{
function say(){//是不允许的,因为父类中say方法别final修饰,那么子类不能够覆盖这个方法
}
}
3.static 关键字,内存中静态量会存放在内存中的静态存储区中
static 可以修饰属性和方法,不能修饰类
使用static 修饰的类的成员属性,存在内存的初始化静态段中
可以被所有同一个类的对象共用,一旦改了值,也都全部改了
第一用到类,也就是类名第一次出现的时候,类在加载到内存时就已经将类中的静态成员加载到了内存静态段中,以后不会再记载到内存中了
静态的成员一定要使用类来访问
self可以在类中的方法中,代表自己类
静态成员一旦被加载到内存,只有脚本结束才释放
在静态的方法中,是不能访问非静态的成员的
重要是能使用静态的环境下声明方法,就最好使用静态方法
class Person{
public $name;
public $age;
public $sex;
public static $country = “中国”;
function __construct($name,$age,$sex){
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
function say(){
echo "我所在的国家:".Person::$country."<br/>";
echo "我所在的国家:".self::$country."<br/>";
}
}
echo Person::$country;//这里就可以输出“中国”
Person::$country = "USA";
echo Person::$country;//这里就可以输出USA
$p1 = new Person("zhangsan",10,"男");
$p2= new Person("zhangsan",10,"男");
$p3 = new Person("zhangsan",10,"男");
$p4 = new Person("zhangsan",10,"男");
4.const关键字
在类里边不能使用define("","");来声明常量
常量也是存储在内存的静态存储区
const 修饰的成员属性为常量,也只能修饰成员属性
常量建议使用大写,不能使用$
常量一定要在声明时就给号初始值
常量的访问方式和static的访问方式相同,都采用self类来访问 self::SEX ; 但是只能读
在类的外部使用 类名::常量名
在类的内部 self::常量名
class Demo{
public $name;
const public SEX = "男";
function say(){
echo self:SEX;
}
static function xx(){
echo self::SEX;
}
}
echo Demo::SEX;
Demo::xx();