<?php
//作业内容:oop基础:请举例实例演绎以下难点
// 1. 类(对象抽象化的结果)与对象 (类实例化结果)
// 2. 构造方法
// 3. 对象成员之间的内部访问 $this
// 4. private仅限本类中使用 protected本类中,子类中使用
// 5. 类的自动加载 spl_autoload_register
// 6. 静态成员的访问 类的引用self::
// 7. 类的继承 扩展 父类方法(魔术方法,普通方法)的重写 parent:: 调用父类成员
//类的自动加载
spl_autoload_register(function ($className){
require $className.'.php';
});
//抽象类
abstract class Demo{
public function show()
{
}
}
//继承抽象类,实例化方法
class Demo2 extends Demo{
public function show()
{
return '显示了方法show';
}
}
$obj = new Demo2();
echo $obj->show().'<br>';
class Father {
public $name;
public $motion;
static $step = 0;
private $pri;
protected $pro ='父类';
public function __construct($name,$motion)
{
$this->name = $name;
$this->motion = $motion;
}
static function Step($step)
{
self::$step = $step;
return '运动步数'.self::$step.'步';
}
public function bl($name)
{
$this->pri = $name;
return '我是私有的不能直接被调用,你可以用成员方法来调用我'.$this->pri;
}
}
class Son extends Father{
public $name;
public $motion;
public function __construct($name, $motion)
{
parent::__construct($name, $motion);
}
static function Step($step)
{
self::$step = $step;
return '当前运动步数'.self::$step.'步';
}
public function Pro()
{
return '我在子类中调用了' . $this->pro . 'pro变量<br>';
}
}
$obj1 = new Son('姚明','跑步');
echo $obj1::Step(500).'<br>';
echo $obj1->bl('你好呀').'<br>';
echo $obj1->Pro();