
批改狀態(tài):合格
老師批語:除了寫對, 還要記住使用場景
1、代碼練習(xí)
<?php
class A
{
//類通過protected和private關(guān)鍵字來封裝
public $name='ldy';
protected $sex='男';
protected $age=28;
public static $course='PHP中文網(wǎng)';
public function getName(){
return __CLASS__.'=>'.__METHOD__;
}
protected function getClass(){
return __CLASS__.':'.$this->getcountvar().'個(gè)屬性';
}
private function getcountvar(){
return count(get_class_vars(__CLASS__));
}
}
// 繼承/擴(kuò)展
class B extends A
{
public static $work='銷售';
// 修改父類中的訪問權(quán)限遵循:子類的訪問權(quán)限必須大于等于父類;public≥protected≥private
// 重寫
public function getClass(){
return parent::getClass().';'.static::$work;
}
// 多態(tài)
public static function get(){
return '調(diào)用靜態(tài)函數(shù)'.__METHOD__;
}
}
echo B::$course.B::$work,'<br>';
echo B::get(),'<br>';
$b=new B();
echo $b->getName(),'<br>';
echo $b->getClass(),'<br>';
echo '<hr>';
//抽象類
abstract class C
{
//類通過protected和private關(guān)鍵字來封裝
public $name='ldy';
protected $sex='男';
protected $age=28;
public static $course='PHP中文網(wǎng)';
public function getName(){
return __CLASS__.'=>'.__METHOD__;
}
abstract protected function getClass();
abstract protected function getcountvar();
}
// 繼承/擴(kuò)展
class D extends C
{
public static $work='銷售';
// 修改父類中的訪問權(quán)限遵循:子類的訪問權(quán)限必須大于等于父類;public≥protected≥private
// 重寫
// 多態(tài)
public static function get(){
return '調(diào)用靜態(tài)函數(shù)'.__METHOD__;
}
function getClass(){
return __CLASS__.':'.$this->getcountvar().'個(gè)屬性'.static::$work;
}
function getcountvar(){
// 父類中的私有變量在繼承中是無法直接繼承的
return count(get_class_vars(__CLASS__));//返回私有變量不參與計(jì)算
}
}
$b=new D();
echo $b->getName(),'<br>';
echo $b->getClass(),'<br>';
// echo $b->getcountvar(),'<br>';
echo '<hr>';
//接口類
interface F
{
const CITY='鄭州';
public static function get();
}
class G implements F{
private $word='測試';
public static function get(){
return '我在'.F::CITY;
//return '我在'.F::CITY.$this->word;靜態(tài)方法無法直接調(diào)用類中的屬性
}
// 訪問私有變量
public function getP(){
return $this->word;
}
}
echo F::CITY,'<br>';
echo G::get(),"<br>";
echo (new G)->getP();
2、演示結(jié)果
1、self: 引用當(dāng)前, $this: 引用當(dāng)前實(shí)例;例如:new self()
和$this->var
;A extends B{}
:A類繼承于B類;
2、global
關(guān)鍵字聲明訪問外部變量;
3、static
:靜態(tài)方法不允許使用$this;只能訪問靜態(tài)成員: 靜態(tài)屬性, 靜態(tài)方法;
4、static::$course
與self::$scourse
的區(qū)別是,self只認(rèn)定義的類,static可以區(qū)分(父和子),作用于實(shí)列類執(zhí)行
5、類中訪問限制(封裝):public|protected|private;同一個(gè)類中的方法可以訪問類中所有的方法和屬性
6、 二類成員: 子類有權(quán)訪問的父類成員類型, public, protected
7、三種操作: 子類對父類的三種操作: 繼承, 重寫, 擴(kuò)展
8、類的三個(gè)特性:
1. 繼承: 父類的二類成員自動(dòng)成為子類的成員
2. 重寫: 覆寫與父類/基類同名的成員(屬性, 方法)
3. 擴(kuò)展: 子類添加自身的方法來增加/擴(kuò)展父類的功能
9、final
:類不可繼承,方法不可重寫
10、abstract
聲明抽象類(與其他類對比可以有抽象方法);
11、interface
:聲明接口;implements
:繼承接口類;接口允許多繼承
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號