<?php
//这是父类
// class father{
// public $i='人';//共有的在哪里都可以访问,不写就默认是这个
// // protected $i = '人';//这个是受保护的只能在自己类和子类中访问
// // private $i = '人';//这个是私有的只能在自己当前类中访问
// function aa(){
// echo'head';
// }
// }
// // 这是子类 通过extends来继承父类的属性和方法
// class son extends father{
// var $ii = "男人";
// function aa(){//在子类重新定义一个和父类相同的方法名就把父类的覆盖了
// echo"方法重写";
// echo $this->i;
// }
// }
// $n = new son();
// $n->aa();
// 定义接口 这个接口的意思只是规定创建类里面方法的名称
// interface a{
// public function aa();//接口里的方法必须的公有的
// }
// // 定义类
// class z implements a{//通过implements来和接口相接
// public function aa(){//只要与接口相接就必须写接口里的方法
// echo "aaa";
// }
// }
// $n = new z();
// $n->aa();
//抽象类 abstract关键词
abstract class a{
public static $t='父类';
abstract protected function m();//抽象方法主要用作继承给子类
public function aa(){
echo 'aaa';
}
}
class b extends a{
const k='常量';//类中定义常量
public static $z='bb';//定义静态属性 关键词static来定义静态方法和属性
function m(){//必须有抽象类里面的方法 而且访问权限相等或者比他大
echo 'c方法'.self::k;//在类中调用静态常量用self
}
public static function i(){//这是静态方法
echo '静态方法'.parent::$t; //调用父类中的静态属性
}
}
// 静态方法或者属性可以不用实例化就可以输出
echo b::k;//输出静态方法或者属性还有常量用::
echo b::$z;
echo b::i();
// $n = new b();
// $n->m();
?>