Blogger Information
Blog 28
fans 0
comment 0
visits 21981
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
类的继承,抽象类和接口的
暝皑祯π_π
Original
899 people have browsed it

类方法

  1. <?php
  2. // 类方法
  3. // 类中的函数
  4. class Car{
  5. public $brand = '红旗';
  6. public $price = '99999';
  7. public $add = '惠州';
  8. public $brand1 = '本田';
  9. public $price1 = '88888';
  10. public static $add1 = '惠州';
  11. //访问类属性1
  12. public function hongqi()
  13. {
  14. // 创建类实例
  15. $cook = new car;
  16. // 访问类中的属性
  17. return "{$cook->add}的價格{$cook->price}";
  18. }
  19. //访问类属性2
  20. public function bentian()
  21. {
  22. // self: 引用当前, $this: 引用当前实例
  23. // 1. 创建类实例, self 与当前的类绑定
  24. // $this不允许用户设置, 由php系统进行维护和赋值
  25. // $this = new self();
  26. // 2. 访问类中的属性, $this 与当前类的实例绑定
  27. // 静态方法: 直接用类调用, 被所有类实例所共享
  28. // 静态方法中只能访问静态成员: 静态属性, 静态方法
  29. return self::$add1 . "的价格{$this->price}";
  30. }
  31. //类中访问外部属性
  32. // 关键字:global
  33. public function byd()
  34. {global $brand2;
  35. return "{$this->add}{$brand2}的价格{$this->price}";
  36. }
  37. // 访问类外部函数:函数的作用域默认是全局, 函数是全局成员
  38. public function jili()
  39. {
  40. $a = jili();
  41. return $a;
  42. }
  43. }
  44. $brand2 = '比亚迪';
  45. $brand3 = '吉利';
  46. function jili()
  47. {
  48. global $brand3;
  49. return $brand3 . '是中国的汽车';
  50. }
  51. $cook = new car;
  52. echo $cook->hongqi();
  53. echo '<hr>';
  54. echo $cook->bentian();
  55. echo '<hr>';
  56. echo $cook->byd();
  57. echo '<hr>';
  58. echo $cook->jili();
  59. echo '<hr>';

作用域

  1. // 作用域
  2. // public: 公开成员,默认值, 类外部, 类内部, 以及类的子类中(类的继承上下文环境中)
  3. // protected: 受保护的成员, 类外部禁止访问, 但是类的内部以及它的继承上下文中可以访问
  4. // private: 私有成员, 除了当前类可以访问, 类的外部以及类的继承上下文中都禁止访问
  5. // 继承上下文环境: 当前类, 以及它的扩展类/子类,构成的一个具有层级结构的类家庭
  6. class Car1{
  7. public $brand5 = '奇瑞';
  8. private $price5 = '66666';
  9. protected $add5 = '惠州';
  10. public function qirui()
  11. {
  12. // 类中方法可以访问类中所有成员, 不受访问控制的限制
  13. return "{$this->add5}{$this->brand5}{$this->price5}";
  14. }
  15. }
  16. $b = new car1;
  17. echo $b->qirui();
  18. echo '<hr>';
  19. echo $b->brand5;
  20. echo '<hr>';
  21. // echo $b->price5; 不能访问
  22. echo '<hr>';
  23. // echo $b->add5; 不能访问
  1. // 子类的创建:关键字:extends
  2. class Car2 extends Car
  3. {
  4. }

继承

  1. // 类的继承三大功能:封装,继承,多态
  2. // 封装:public, proteced, private
  3. // 继承:也叫类的扩展
  4. // 二类成员: 子类有权访问的父类成员类型, public, protected
  5. // 三种操作: 子类对父类的三种操作: 继承, 重写, 扩展
  6. // 1. 继承: 父类的二类成员自动成为子类的成员
  7. // 2. 重写: 覆写与父类/基类同名的成员(属性, 方法)
  8. // 3. 扩展: 子类添加自身的方法来增加/扩展父类的功能
  9. // 基类/父类
  10. class City
  11. {
  12. public $capital = '北京';
  13. protected $district = '密云区';
  14. private $district1 = '东城区';
  15. function compare()
  16. {
  17. return "{$this->capital}最大的区是{$this->district},最小的区是{$this->district1}";
  18. }
  19. }
  20. // 子类:也叫扩展类
  21. // 关键字:extends
  22. class City1 extends City
  23. {
  24. // 重写父类属性:覆写与父类/基类同名的成员(属性, 方法)
  25. public $capital = '西城区 ';
  26. // 重写父类方法:覆写与父类/基类同名的成员(属性, 方法)
  27. public function compare()
  28. {
  29. return "{$this->district}不属于{$this->capital}";
  30. }
  31. // 属性扩展:子类添加自身的方法来增加/扩展父类的功能
  32. public $capital2 ='朝阳';
  33. // 方法扩展:子类添加自身的方法来增加/扩展父类的功能
  34. public function province()
  35. {
  36. return "{$this->capital2}";
  37. }
  38. }
  39. // 子类操作:继承
  40. // 子类中继承了父类的公开成员和受保护成员,所以在子类中也可以访问
  41. $b = new city1;
  42. echo $b->capital;
  43. echo '<hr>';
  44. echo $b->compare();
  45. echo '<hr>';
  46. // 子类操作:重写
  47. echo $b->capital;
  48. echo '<hr>';
  49. echo $b->compare();
  50. echo '<hr>';
  51. // 子类操作:扩展
  52. echo $b->capital2;
  53. echo '<hr>';
  54. echo $b->province();

抽象类

  1. // 抽象类:也叫设计类:关键字:abstract
  2. // 抽象类不能被实例化
  3. // 只要一个类中有一个抽象方法, 那么这个类就是:抽象类
  4. // 实现类/工作类: 是一个可以被实例化的普通类
  5. // 工作类不一定是可以被实例化的普通类,也可是一个抽象类
  6. // 抽象类也可以被继承, 抽象类也可以用在继承的上下文环境中
  7. // 抽象类中允许有抽象成员, 但不是强制的,也可以没有
  8. // 设计类
  9. abstract class Introduce
  10. {
  11. public $name = '小明';
  12. protected $profession = 'it男';
  13. protected $age = '25';
  14. abstract public function poi();
  15. public function lol()
  16. {
  17. return "{$this->name}{$this->profession}";
  18. }
  19. }
  20. // 实现类:也叫工作类
  21. // 在实现类中通过重写方法实现设计类中没有实现的方法
  22. class Jj extends Introduce
  23. {
  24. public function poi()
  25. {
  26. return parent::lol() . "年龄是{$this->age}";
  27. }
  28. }
  29. $h = new Jj;
  30. echo '<hr>';
  31. echo $h->poi();

接口

  1. // 接口
  2. // 接口: 完成分离了"设计与实现"
  3. // 使用与类相似的语法: 抽象方法, 常量, 构造方法(魔术方法的一种)
  4. // 默认访问控制必须是public
  5. // 接口允许多继承, 从而间接实现了PHP的多继承
  6. // implements (英婆慢吃)
  7. // 接口:关键字: interface
  8. interface nem
  9. {
  10. // 接口成员常量:大写
  11. const NAMBER = '15';
  12. // 接口成员方法:抽象方法
  13. public function asd();
  14. }
  15. // 实现类:关键字:implements
  16. class key implements nem
  17. {
  18. public function asd()
  19. {
  20. return nem::NAMBER;
  21. }
  22. }
  23. $v = new key;
  24. echo '<hr>';
  25. echo $v->asd();

总结

  • 1.类属性:是创建在类中,可供类中的所有函数调用
  • 2.方法中的变量:是只有包含它的方法中财能使用它
  • 3.类中方法可以访问类中所有成员, 不受访问控制的限制
  • 4.子类中属性和方法的访问符必需大于类中的访问符
  • 5.一旦类中包含了abstract方法,则这个类必须声明为abstract
  • 6.如果一个类继承了某个抽象类,则它必须实现该抽象类的所有抽象方法 
  • 7.抽象类实现了部分设计与实现,可以有具体的方法也可以有抽象的方法
  • 8.接口完全实现了设计与分类,必须是抽象的方法
  • 9.’继承’关键字extends,接口’实现’关键字implement
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:类与类之间的层级关系, 是构建大型商业程序的架构基础
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post