批改状态:合格
老师批语:

//类的继承/扩展class Demo1{private int $age = 10;//protected 受保护的,用在当前类或者他的子类中 外部不可见protected string $name;//魔术方法public function __construct($name){$this->name = $name;}public function getUser(): string{return $this->name;}}//extends继承 将Demo1中的代码复制到Demo2中class Demo2 extends Demo1{//扩展父类中的属性public string $guoji;//扩展父类中的方法public function __construct($age,$name,$guoji){//parent引用父类的方法parent::__construct($name);$this->age = $age;$this->guoji = $guoji;}//扩展父类的方法public function getUser():string{return '我是'. parent::getUser() . ',年龄是'.$this->age . ',国家是'.$this->guoji;}}$demo = new Demo2(20,'张三','中国');echo $demo->getUser();
抽象类声明关键字abstract 如果一个类中有抽象方法 那么这个类必须要被声明为抽象类

//抽象类//抽象类声明关键字abstract//如果一个类中有抽象方法 那么这个类必须要被声明为抽象类abstract class Demo3{public static $name='admin';//将一个没有实现的方法声明为抽象方法abstract public function f($name);}//必须在子类中将抽象方法实现class Demo4 extends Demo3{public function f($name){return '我是'.$name;}}$demo4 = new Demo4();echo $demo4->f('李四');

// 2.全局成员有哪些/*** 函数/常量/类/接口* 全局成员不允许重复声明全局有效* 可以使用命名空间在一个文件内重复声明*/namespace Demo1;const USER = '第一个';class User{}echo USER;echo '<hr>';namespace Demo2;const USER = '第二个';class User{}echo USER;

//命名空间解决了全局成员的命名冲突//当存在命名空间时访问全局成员应该要用完整名称//可以通过\命名空间\的方式来访问其他空间的成员// namespace Demo;// echo \Demo2\User::$name;// 命名空间声明方式:// 1. 当前路径: 非限定名称, Index// 2. 相对路径: 限定名称, two\Index// 3. 绝对路径: 完全限定名称, \one\two\Index//如果命名空间太长比如是多级可以用关键字use进行修饰// use 默认使用完全限定名称的类名/绝对路径namespace Demo\Index;class User{public static $name = User::class.'\张三<hr>';}use \Demo\Index\User as UserIndex;echo UserIndex::$name;namespace Demo\Index1;use \Demo\Index1\User as UserIndex1;class User{public static $name = User::class.'\李四<hr>';}echo UserIndex1::$name;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号