批改状态:合格
老师批语:面向对象中有许多新知识 , 如果自学难度不小
echo '<h3>一、常规属性的定义和访问</h3>';class Person {//在类内部定义类的常规属性public $name = '小明';public static $age = 18;public function getName() {//在类内部访问类的常规属性return $this->name;}}$p1 = new Person();//在类外部访问类的常规属性echo $p1->name;echo '<br>';//在类内部访问类的常规属性echo $p1->getName();echo '<h3>二、静态属性的定义和访问</h3>';class Person1 {public $name = '小红';//在类内部定义类的静态属性public static $age = 17;public function getAge() {//在类内部访问类的静态属性return self::$age;}}$p2 = new Person1();//在类外部访问类的静态属性echo $p2::$age;echo '<br>';//在类内部访问类的静态属性echo $p2->getAge();

echo '<h3>一、常规方法的定义和访问</h3>';class Person {public $name = '小明';public static $age = 18;//在类内部定义类的常规方法public function getName() {return $this->name;}public function sayName() {//在类内部调用类的常规方法echo $this->getName();}}$p1 = new Person();//在类外部调用类的常规方法echo $p1->sayname();echo '<br>';echo '<h3>二、静态方法的定义和访问</h3>';class Person1 {public $name = '小红';public static $age = 17;//在类内部定义类的静态方法public static function getAge() {return self::$age;}public static function sayAge() {//在类内部调用类的静态方法echo self::getAge();}}$p2 = new Person1();//在类外部调用类的静态方法echo $p2::sayAge();echo '<br>';echo '<h3>三、在类方法中访问外部成员</h3>';$name = '小王';$age = 19;$sayName = function() {global $name;return '我的名字叫'.$name;};class Person2 {public function hello($v, $a) {return $v(). ','.'我的年龄是'.$a;}}$p3 = new Person2;echo $p3->hello($sayName, $age);

/** 时间:2020年4月30日10:42:47* 知识点:重写类属性和类方法* 场景:重写父类的方法并对其进行拓展*/echo '<h3>类的继承</h3>';class Person {//定义公共的类属性public $name;public $sex;public $age;public $test = 1;//使用一个公共方法初始化类属性public function setInfo($name, $sex, $age){$this->name = $name;$this->sex = $sex;$this->age = $age;}//定义一个公共方法来获取类属性public function getSelf() {return $this->name.$this->sex.$this->age;}}$p1 = new Person;$p1->setInfo('小明', '男', 18);echo $p1->test;echo $p1->getSelf();echo '<br>';//定义一个子类class Student extends Person {//重写父类的属性public $test = 2;public $school = '北京三中';//重写父类的saySelf方法//并在该方法中使用parent关键字调用父类被覆盖的saySelf方法//如果需要父类saySelf方法中的完整代码而又要避免在该方法中对其复制粘贴,因为这样会导致代码冗余public function getSelf() {return parent::getSelf().$this->school;}//扩展父类的方法public function saySchool() {echo '我在'.$this->school.'读书';}}$p2 = new Student;$p2->setInfo('小红', '女', 17);echo $p2->test;echo $p2->getSelf();echo '<br>';$p2->saySchool();

| 序号 | 描述 |
|---|---|
| 1 | 抽象类也叫设计类 |
| 2 | 不能被实例化 |
| 3 | 只要类中有一个抽象方法,那么这个类就是抽象类 |
| 4 | 抽象类中允许有抽象成员,但不是强制的,也可以没有,类中也可以定义普通方法 |
| 5 | 必须实现类中的抽象方法才可以实现此抽象类 |
| 6 | 抽象类可以被继承 |
echo '<h3>抽象类的实现</h3>';//设计类实现abstract class aPerson {protected static $name;protected static $sex;protected static $age;abstract protected function getInfo();}//工作类实现class Student extends aPerson {protected $school;public function setInfo($name, $sex, $age, $school) {self::$name = $name;self::$sex = $sex;self::$age = $age;$this->school = $school;}public function getInfo() {return self::$name.self::$sex.self::$age.$this->school;}}//客户端调用$user = new Student;$user->setInfo('小明', '男', 18, '北京三中');echo $user->getInfo();

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号