亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 34
粉絲 0
評論 0
訪問量 28646
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
類的擴展、抽象及接口和命名空間
OC的PHP大牛之路
原創(chuàng)
1207人瀏覽過

類的擴展、抽象及接口

protected 可繼承成員
extends 類成員的來源
parent父類引用

  1. class Person
  2. {
  3. // 1. 屬性
  4. // public: 公共成員, 當前類, 類外部
  5. // public string $email = 'a@qq.com';
  6. // private: 私有成員, 僅限當前類,類外部不可見
  7. private int $id = 10;
  8. // protected: 受保護的, 用在當前類,以及他的子類
  9. protected string $name;
  10. // public > protected > private
  11. // 類中,類外,子類: public
  12. // 類中,子類: protected
  13. // 類中: private
  14. // 2. 方法
  15. public function __construct($name)
  16. {
  17. $this->name = $name;
  18. }
  19. // 自定義方法
  20. protected function getInfo(): string
  21. {
  22. return $this->name;
  23. }
  24. }

擴展

  1. class Stu extends Person
  2. {
  3. // extends: 相當于把父類代碼復(fù)制到當前類中(除Private成員外)
  4. // 只需要擴展父類中的:"屬性和方法"
  5. // 1. 屬性擴展
  6. // 之前
  7. // protected string $name;
  8. // 擴展的
  9. private string $lesson;
  10. private int $score;
  11. // 2. 方法擴展
  12. // 構(gòu)造方法
  13. public function __construct($name, $lesson, $score)
  14. {
  15. // parent: 引用父類
  16. parent::__construct($name);
  17. $this->lesson = $lesson;
  18. $this->score = $score;
  19. }
  20. // protected -> public
  21. public function getInfo(): string
  22. {
  23. return parent::getInfo() . '同學, (' . $this->lesson .
  24. ' ) , 成績: ' . $this->score .'<br>';
  25. }
  26. }
  27. $stu = new Stu('小張', 'php', 90);
  28. echo $stu->getInfo() ;

抽象類

禁用父類, 僅允許通過它的子類來訪問父類成員
把當前類,聲明為”抽象類”: abstract
如果類中有抽象方法,則這個類必須聲明為抽象類

  1. abstract class Demo1
  2. {
  3. public string $name = 'admin';
  4. // 如果某個方法沒有具體實現(xiàn),應(yīng)該聲明成抽象方法
  5. abstract public static function getInfo($name);
  6. }
  7. class Demo2 extends Demo1
  8. {
  9. // 在子類中, 必須將父類中的抽象方法實現(xiàn)了
  10. public static function getInfo($name)
  11. {
  12. return 'Hello, ' .$name;
  13. }
  14. }
  15. echo Demo2::getInfo('朱老師');

接口類

升級版的”抽象類”

  1. // 接口類
  2. interface iUser
  3. {
  4. // 常量
  5. public const NATION = 'CHINA';
  6. // 方法: public
  7. public function m1();
  8. public function m2();
  9. }
  10. // 工作類: 實現(xiàn)了接口的類
  11. class Demo1 implements iUser
  12. {
  13. // 接口的抽象方法,必須在工作類中全部實現(xiàn)
  14. public function m1()
  15. {
  16. }
  17. public function m2()
  18. {
  19. }
  20. }
  21. // 如果實現(xiàn)類僅實現(xiàn)了接口的一部分抽象方法,應(yīng)該聲明為抽象類
  22. abstract class Demo2 implements iUser
  23. {
  24. public function m1()
  25. {
  26. }
  27. }
  28. class Demo3 extends Demo2
  29. {
  30. public function m2()
  31. {
  32. }
  33. }
  34. // php是單繼承
  35. interface A
  36. {
  37. }
  38. interface B
  39. {
  40. }
  41. interface C
  42. {
  43. }
  44. // Test類,同時從三個接口中獲取成員,間接實現(xiàn)了"多繼承"
  45. class Test implements A, B, C
  46. {
  47. }
  48. interface iDb
  49. {
  50. // insert
  51. public static function insert(array $data);
  52. // update
  53. public static function update(array $data, string $where);
  54. // delete
  55. public static function delete(string $where);
  56. // select
  57. public static function select(array $options);
  58. }
  59. abstract class aDb
  60. {
  61. // insert
  62. public static function insert(array $data)
  63. {
  64. }
  65. // update
  66. public static function update(array $data, string $where)
  67. {
  68. }
  69. // delete
  70. public static function delete(string $where)
  71. {
  72. }
  73. }
  74. class Db extends aDb
  75. {
  76. }

命名空間

全局成員

全局成員: 函數(shù), 常量, 類/接口,全局有效, 禁止重復(fù)聲明

  1. function hello()
  2. {
  3. }
  4. const A =1;
  5. class D
  6. {
  7. }
  8. // 將第二個hello 聲明到另一個空間中,不會重名了
  9. namespace _0815_1;
  10. function hello()
  11. {
  12. }
  13. const A = 2;
  14. class D
  15. {
  16. }

跨空間

  1. class Demo1
  2. {
  3. public static string $name = 'admin';
  4. }
  5. // 當存在命名空間時, 全局成員應(yīng)該使用完整的名稱
  6. // 完整類名 = 空間名稱\類名
  7. // ::class 獲取類的完整名稱
  8. echo Demo1::class . '<br>';
  9. echo \two\Demo1::$name;
  10. namespace two;
  11. class Demo1
  12. {
  13. public static string $name = '豬老師';
  14. }
  15. echo Demo1::class . '<br>';
  16. // 跨空間訪問
  17. // echo one\Demo1::$name;
  18. // 跨空間訪問時,必須從根空間/全局空間開始查詢: \
  19. echo \one\Demo1::$name;
  20. // 實際訪問的是: 'two\one\Demo1'
批改老師:PHPzPHPz

批改狀態(tài):合格

老師批語:
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學習者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學習!
    全站2000+教程免費學