
批改狀態(tài):合格
老師批語(yǔ):面向?qū)ο笾杏性S多新知識(shí) , 如果自學(xué)難度不小
echo '<h3>一、常規(guī)屬性的定義和訪問(wèn)</h3>';
class Person {
//在類內(nèi)部定義類的常規(guī)屬性
public $name = '小明';
public static $age = 18;
public function getName() {
//在類內(nèi)部訪問(wèn)類的常規(guī)屬性
return $this->name;
}
}
$p1 = new Person();
//在類外部訪問(wèn)類的常規(guī)屬性
echo $p1->name;
echo '<br>';
//在類內(nèi)部訪問(wèn)類的常規(guī)屬性
echo $p1->getName();
echo '<h3>二、靜態(tài)屬性的定義和訪問(wèn)</h3>';
class Person1 {
public $name = '小紅';
//在類內(nèi)部定義類的靜態(tài)屬性
public static $age = 17;
public function getAge() {
//在類內(nèi)部訪問(wèn)類的靜態(tài)屬性
return self::$age;
}
}
$p2 = new Person1();
//在類外部訪問(wèn)類的靜態(tài)屬性
echo $p2::$age;
echo '<br>';
//在類內(nèi)部訪問(wèn)類的靜態(tài)屬性
echo $p2->getAge();
echo '<h3>一、常規(guī)方法的定義和訪問(wèn)</h3>';
class Person {
public $name = '小明';
public static $age = 18;
//在類內(nèi)部定義類的常規(guī)方法
public function getName() {
return $this->name;
}
public function sayName() {
//在類內(nèi)部調(diào)用類的常規(guī)方法
echo $this->getName();
}
}
$p1 = new Person();
//在類外部調(diào)用類的常規(guī)方法
echo $p1->sayname();
echo '<br>';
echo '<h3>二、靜態(tài)方法的定義和訪問(wèn)</h3>';
class Person1 {
public $name = '小紅';
public static $age = 17;
//在類內(nèi)部定義類的靜態(tài)方法
public static function getAge() {
return self::$age;
}
public static function sayAge() {
//在類內(nèi)部調(diào)用類的靜態(tài)方法
echo self::getAge();
}
}
$p2 = new Person1();
//在類外部調(diào)用類的靜態(tài)方法
echo $p2::sayAge();
echo '<br>';
echo '<h3>三、在類方法中訪問(wèn)外部成員</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);
/*
* 時(shí)間:2020年4月30日10:42:47
* 知識(shí)點(diǎn):重寫類屬性和類方法
* 場(chǎng)景:重寫父類的方法并對(duì)其進(jìn)行拓展
*/
echo '<h3>類的繼承</h3>';
class Person {
//定義公共的類屬性
public $name;
public $sex;
public $age;
public $test = 1;
//使用一個(gè)公共方法初始化類屬性
public function setInfo($name, $sex, $age)
{
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
//定義一個(gè)公共方法來(lái)獲取類屬性
public function getSelf() {
return $this->name.$this->sex.$this->age;
}
}
$p1 = new Person;
$p1->setInfo('小明', '男', 18);
echo $p1->test;
echo $p1->getSelf();
echo '<br>';
//定義一個(gè)子類
class Student extends Person {
//重寫父類的屬性
public $test = 2;
public $school = '北京三中';
//重寫父類的saySelf方法
//并在該方法中使用parent關(guān)鍵字調(diào)用父類被覆蓋的saySelf方法
//如果需要父類saySelf方法中的完整代碼而又要避免在該方法中對(duì)其復(fù)制粘貼,因?yàn)檫@樣會(huì)導(dǎo)致代碼冗余
public function getSelf() {
return parent::getSelf().$this->school;
}
//擴(kuò)展父類的方法
public function saySchool() {
echo '我在'.$this->school.'讀書';
}
}
$p2 = new Student;
$p2->setInfo('小紅', '女', 17);
echo $p2->test;
echo $p2->getSelf();
echo '<br>';
$p2->saySchool();
序號(hào) | 描述 |
---|---|
1 | 抽象類也叫設(shè)計(jì)類 |
2 | 不能被實(shí)例化 |
3 | 只要類中有一個(gè)抽象方法,那么這個(gè)類就是抽象類 |
4 | 抽象類中允許有抽象成員,但不是強(qiáng)制的,也可以沒(méi)有,類中也可以定義普通方法 |
5 | 必須實(shí)現(xiàn)類中的抽象方法才可以實(shí)現(xiàn)此抽象類 |
6 | 抽象類可以被繼承 |
echo '<h3>抽象類的實(shí)現(xiàn)</h3>';
//設(shè)計(jì)類實(shí)現(xiàn)
abstract class aPerson {
protected static $name;
protected static $sex;
protected static $age;
abstract protected function getInfo();
}
//工作類實(shí)現(xiàn)
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;
}
}
//客戶端調(diào)用
$user = new Student;
$user->setInfo('小明', '男', 18, '北京三中');
echo $user->getInfo();
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)