abstract class fun1{ //定义fun1 为抽象类,使用abstract 关键字定义。
abstract function fun_1(); //在抽象类中,至少要有一个抽象方法,在定义一般方法的基础上加abstract 关键字进行定义;
abstract function fun_2();
abstract function fun_3();
abstract function fun_4();
function fun_5(){
} //虽然是抽象类,但是里面还是可以拥有一般方法的,
}
class fun2 extends fun1{ //ok 这里定义一个类,继承上面定义的抽象类fun1 并且必须加将抽象类的各个抽象方法进行重载。必须各个用到
function fun_1(){ //将抽象方法一一重载
echo 'fun1';
}
function fun_2(){
echo 'fun2';
}
function fun_3(){
echo "fun_3";
}
function fun_4(){
echo "fun_4";
}
}
class fun3{ //这里示范一个定义常量的类
const NAME='PC100'; //使用const 关键字定义常量。
public $name="pc100aaa0";
function self(){ //定义一个方法,示范self 关键字的使用
echo self::NAME; //self 关键字可以直接不用经过实例化类读取类的信息
}
}
echo fun3::NAME; //没有实例化将常量打印出来
fun3::self(); //用类名来调用方法。
//fun3::name; //同样的方法调用变量却被提示错误
$conts=new fun3(); //实例化输出
$conts->self();
$p=new fun2(); //将继承抽象类的fun2 类进行实例化。
$p->fun_1(); //输出fun2中的fun_1方法
final class fun4{ //用了final关键字定义的类不能被继承。
const NAME='This is a constant';
public $var='这个类不能被继承';
final function fun4(){ //用了final 关键字定义的方法不能被重载
echo $var;
}
}
echo fun4::NAME;
$fun4=new fun4();
?>