批改状态:合格
老师批语:类与类之间的层级关系, 是构建大型商业程序的架构基础
<?php// 类方法// 类中的函数class Car{public $brand = '红旗';public $price = '99999';public $add = '惠州';public $brand1 = '本田';public $price1 = '88888';public static $add1 = '惠州';//访问类属性1public function hongqi(){// 创建类实例$cook = new car;// 访问类中的属性return "{$cook->add}的價格{$cook->price}";}//访问类属性2public function bentian(){// self: 引用当前, $this: 引用当前实例// 1. 创建类实例, self 与当前的类绑定// $this不允许用户设置, 由php系统进行维护和赋值// $this = new self();// 2. 访问类中的属性, $this 与当前类的实例绑定// 静态方法: 直接用类调用, 被所有类实例所共享// 静态方法中只能访问静态成员: 静态属性, 静态方法return self::$add1 . "的价格{$this->price}";}//类中访问外部属性// 关键字:globalpublic function byd(){global $brand2;return "{$this->add}{$brand2}的价格{$this->price}";}// 访问类外部函数:函数的作用域默认是全局, 函数是全局成员public function jili(){$a = jili();return $a;}}$brand2 = '比亚迪';$brand3 = '吉利';function jili(){global $brand3;return $brand3 . '是中国的汽车';}$cook = new car;echo $cook->hongqi();echo '<hr>';echo $cook->bentian();echo '<hr>';echo $cook->byd();echo '<hr>';echo $cook->jili();echo '<hr>';
// 作用域// public: 公开成员,默认值, 类外部, 类内部, 以及类的子类中(类的继承上下文环境中)// protected: 受保护的成员, 类外部禁止访问, 但是类的内部以及它的继承上下文中可以访问// private: 私有成员, 除了当前类可以访问, 类的外部以及类的继承上下文中都禁止访问// 继承上下文环境: 当前类, 以及它的扩展类/子类,构成的一个具有层级结构的类家庭class Car1{public $brand5 = '奇瑞';private $price5 = '66666';protected $add5 = '惠州';public function qirui(){// 类中方法可以访问类中所有成员, 不受访问控制的限制return "{$this->add5}{$this->brand5}{$this->price5}";}}$b = new car1;echo $b->qirui();echo '<hr>';echo $b->brand5;echo '<hr>';// echo $b->price5; 不能访问echo '<hr>';// echo $b->add5; 不能访问
// 子类的创建:关键字:extendsclass Car2 extends Car{}
// 类的继承三大功能:封装,继承,多态// 封装:public, proteced, private// 继承:也叫类的扩展// 二类成员: 子类有权访问的父类成员类型, public, protected// 三种操作: 子类对父类的三种操作: 继承, 重写, 扩展// 1. 继承: 父类的二类成员自动成为子类的成员// 2. 重写: 覆写与父类/基类同名的成员(属性, 方法)// 3. 扩展: 子类添加自身的方法来增加/扩展父类的功能// 基类/父类class City{public $capital = '北京';protected $district = '密云区';private $district1 = '东城区';function compare(){return "{$this->capital}最大的区是{$this->district},最小的区是{$this->district1}";}}// 子类:也叫扩展类// 关键字:extendsclass City1 extends City{// 重写父类属性:覆写与父类/基类同名的成员(属性, 方法)public $capital = '西城区 ';// 重写父类方法:覆写与父类/基类同名的成员(属性, 方法)public function compare(){return "{$this->district}不属于{$this->capital}";}// 属性扩展:子类添加自身的方法来增加/扩展父类的功能public $capital2 ='朝阳';// 方法扩展:子类添加自身的方法来增加/扩展父类的功能public function province(){return "{$this->capital2}";}}// 子类操作:继承// 子类中继承了父类的公开成员和受保护成员,所以在子类中也可以访问$b = new city1;echo $b->capital;echo '<hr>';echo $b->compare();echo '<hr>';// 子类操作:重写echo $b->capital;echo '<hr>';echo $b->compare();echo '<hr>';// 子类操作:扩展echo $b->capital2;echo '<hr>';echo $b->province();
// 抽象类:也叫设计类:关键字:abstract// 抽象类不能被实例化// 只要一个类中有一个抽象方法, 那么这个类就是:抽象类// 实现类/工作类: 是一个可以被实例化的普通类// 工作类不一定是可以被实例化的普通类,也可是一个抽象类// 抽象类也可以被继承, 抽象类也可以用在继承的上下文环境中// 抽象类中允许有抽象成员, 但不是强制的,也可以没有// 设计类abstract class Introduce{public $name = '小明';protected $profession = 'it男';protected $age = '25';abstract public function poi();public function lol(){return "{$this->name}{$this->profession}";}}// 实现类:也叫工作类// 在实现类中通过重写方法实现设计类中没有实现的方法class Jj extends Introduce{public function poi(){return parent::lol() . "年龄是{$this->age}";}}$h = new Jj;echo '<hr>';echo $h->poi();
// 接口// 接口: 完成分离了"设计与实现"// 使用与类相似的语法: 抽象方法, 常量, 构造方法(魔术方法的一种)// 默认访问控制必须是public// 接口允许多继承, 从而间接实现了PHP的多继承// implements (英婆慢吃)// 接口:关键字: interfaceinterface nem{// 接口成员常量:大写const NAMBER = '15';// 接口成员方法:抽象方法public function asd();}// 实现类:关键字:implementsclass key implements nem{public function asd(){return nem::NAMBER;}}$v = new key;echo '<hr>';echo $v->asd();
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号