Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
/* * oop基础:请举例实例演绎以下难点 * 1. 类(对象抽象化的结果)与对象 (类实例化结果) * 2. 构造方法 * 3. 对象成员之间的内部访问 $this * 4. private仅限本类中使用 protected本类中,子类中使用 * 5. 类的自动加载 spl_autoload_register * 6. 静态成员的访问 类的引用self:: * 7. 类的继承 扩展 父类方法(魔术方法,普通方法)的重写 parent:: 调用父类成员 */ class B{ //public protected private 修饰符 分别是公用的 受保护的 保密的 public $name; public $age; public $height; public $like; public $simple = 'test'; private $weight = '55'; public static $num = '123456'; protected $tes = 'www'; public $color ='red'; //构造方法 public function __construct() { $this->weight='65'; } public function make_(){ //对象成员之间的内部访问 $this echo '名字:'.$this->name.'<br>'; echo '年龄:'.$this->age.'<br>'; echo '身高:'.$this->height.'<br>'; echo '喜好:'.$this->like.'<br>'; echo '体重:'.$this->weight.'<br>'; echo '幸运色:'.$this->color.'<br>'; } public function echo_weight(){ echo $this->weight; //继承的类不能调用 报错 } // 静态成员的访问 类的引用self:: public function echo_static() { echo self::$num; echo "<br>"; } } //类(对象抽象化的结果)与对象 (类实例化结果) $person = new B; //类的继承 class C extends B{ public function test_weight(){ echo $this->weight; //继承的类调不出来类属性 } public function test_pro(){ echo $this->tes; //继承的类不能调用 报错 } //类的扩展 public function __construct() { parent::__construct(); $this->color = 'blue'; } public function echo_weight() { echo 'wwwwwwwwwwwwwwwwwwwwwwwww'; //类方法重写覆盖 类原先输出的是weight 这边重写输出字符串wwwwwwwwwwwwwwwwwwwwwwwww echo "<br>"; } } $person->echo_weight();//用类本身调用 65 $C =new C; $C->test_weight(); //继承的类不能调用 报错 echo "<br>"; $C->test_pro(); //继承的类不能调用 报错 echo "<br>"; // 静态成员的访问 类的引用self:: echo $person::$num; echo "<br>"; $person->echo_static(); echo "<br>"; $person->name = 'ych'; $person->height = '165'; $person->age = '26'; $person->like = 'play'; $person->make_(); echo "____________________________________"; //类的继承 C类本身没有make_方法 继承于B类 $C->make_(); echo $person->simple; echo "<br>"; $C->echo_weight();
//类的自动加载 spl_autoload_register <?php class A { public function ec_(){ echo '类A'; } }
<?php function auto_($class){ $file = $class.'.php'; if(is_file($file)){ require_once($file); } } //类的自动加载 spl_autoload_register spl_autoload_register('auto_'); $obj = new A; $obj->ec_();