博客列表 >12月4号作业 类与对象

12月4号作业 类与对象

遗忘了寂寞
遗忘了寂寞原创
2019年12月04日 14:55:06749浏览

创建类

  1. // 1. 创建类
  2. class Demo1
  3. {
  4. // 2. 添加类成员
  5. public $site = 'php中文网';
  6. public $role = '讲师';
  7. public function getSite()
  8. {
  9. return $this->site . ' 欢迎您~~';
  10. }
  11. public function getRole()
  12. {
  13. return $this->role;
  14. }
  15. }
  16. // 3. 访问类成员
  17. $obj = new Demo1();
  18. echo $obj->site . '<br>';
  19. echo $obj->getRole() . '<br>';

构造函

  1. // 1. 创建类
  2. class Demo3
  3. {
  4. // 2. 添加类成员
  5. public $site;
  6. public $role;
  7. public function getInfo()
  8. {
  9. return '我是: ' . $this->site . $this->role;
  10. }
  11. // 构造函
  12. public function __construct($site, $role)
  13. {
  14. // 1. 初始化类成员
  15. $this->site = $site;
  16. $this->role = $role;
  17. echo $this->getInfo();
  18. }
  19. }
  20. // 3. 访问类成员
  21. new Demo3('PHP中文网', '张三');

访问控制,实现类的封装

  1. // 访问控制,实现类的封装
  2. // 1. 创建类
  3. class Demo4
  4. {
  5. // 2. 添加类成员
  6. public $site;
  7. protected $role;
  8. // 构造方法
  9. public function __construct($site, $role)
  10. {
  11. $this->site = $site;
  12. $this->role = $role;
  13. }
  14. // 魔术方法: __get($name), 属性重载
  15. public function __get($name)
  16. {
  17. // 仅允许用户名是'admin'的用户访问,其它访问返回: 无权访问
  18. $username = $_GET['username'] ?? '';
  19. if (isset($username) && $username === 'admin') {
  20. return isset($this->$name) ? $this->$name : '属性未定义';
  21. } else {
  22. return '无权访问';
  23. }
  24. }
  25. }
  26. // 3. 访问类成员
  27. $obj = new Demo4('www.php.cn', '讲师');
  28. echo $obj->role;
  29. echo '<br>';
  30. echo $obj->name;

类的继承

  1. // 类的继承
  2. // 1. 创建类
  3. class Demo5
  4. {
  5. // 2. 添加类成员
  6. public $site;
  7. protected $role;
  8. public function getInfo()
  9. {
  10. return '我是: ' . $this->site . '讲师: ' . $this->role;
  11. }
  12. public function __construct($site, $role)
  13. {
  14. $this->site = $site;
  15. $this->role = $role;
  16. }
  17. }
  18. class Demo5_1 extends Demo5
  19. {
  20. // 当前子类的自身属性
  21. private $course;
  22. public function __construct($site, $role, $course)
  23. {
  24. // parent:: 调用 父类中的成员
  25. parent::__construct($site, $role);
  26. $this->course = $course;
  27. }
  28. // 重写父类中的方法
  29. public function getInfo()
  30. {
  31. return parent::getInfo() . ', 负责的课程是: ' . $this->course;
  32. }
  33. }
  34. // 3. 访问类成员
  35. $sub = new Demo5_1('php中文网', '张三', 'php');
  36. echo $sub->getInfo();

trait: 创建一个公共方法库

  1. // trait: 当成一个公共方法库
  2. // trait: 使用了类的定义的语法,但不是类, 所以不能实例化
  3. trait Test
  4. {
  5. public function getInfo()
  6. {
  7. return '我是: ' . $this->site . '讲师: ' . $this->role;
  8. }
  9. }
  10. // 1. 创建类
  11. // Demo6: 宿主类
  12. class Demo6
  13. {
  14. // 导入trait类库
  15. use Test;
  16. // 2. 添加类成员
  17. public $site;
  18. protected $role;
  19. public function __construct($site, $role)
  20. {
  21. $this->site = $site;
  22. $this->role = $role;
  23. }
  24. }
  25. class Demo6_1 extends Demo6
  26. {
  27. // 当前子类的自身属性
  28. private $course;
  29. public function __construct($site, $role, $course)
  30. {
  31. // parent:: 调用 父类中的成员
  32. parent::__construct($site, $role);
  33. $this->course = $course;
  34. }
  35. }
  36. // 优先级: 当前类中的同名方法 > trait类中的同名方法 > 父类中的同名方法
  37. // 3. 访问类成员
  38. $obj = new Demo6('php中文网', '张三');
  39. echo $obj->getInfo();
  40. echo '<hr>';
  41. $sub = new Demo6_1('php.cn', '张三', 'php');
  42. echo $sub->getInfo();

接口

  1. // 接口:
  2. interface iDemo
  3. {
  4. // 接口方法
  5. public function getInfo();
  6. public function hello();
  7. }
  8. // 1. 创建类
  9. class Demo7 implements iDemo
  10. {
  11. // 2. 添加类成员
  12. public $site;
  13. protected $role;
  14. public function getInfo()
  15. {
  16. return '我是: ' . $this->site . '讲师: ' . $this->role;
  17. }
  18. public function hello()
  19. {
  20. return 'Hello 大家好';
  21. }
  22. // 构造方法
  23. public function __construct($site, $role)
  24. {
  25. $this->site = $site;
  26. $this->role = $role;
  27. }
  28. }
  29. // 3. 访问类成员
  30. $obj = new Demo7('php中文网', '张三');
  31. echo $obj->getInfo() . '<br>';
  32. echo $obj->hello() . '<br>';

抽象类

  1. // 抽象类
  2. abstract class Chouxiang
  3. {
  4. // 抽象方法
  5. abstract public function getInfo();
  6. // 已实现方法
  7. public function hello()
  8. {
  9. return 'Hello 大家晚上好';
  10. }
  11. }
  12. // 1. 创建类
  13. class Demo8 extends Chouxiang
  14. {
  15. // 2. 添加类成员
  16. public $site;
  17. protected $role;
  18. public function getInfo()
  19. {
  20. return '我是: ' . $this->site . '讲师: ' . $this->role;
  21. }
  22. // 构造方法
  23. public function __construct($site, $role)
  24. {
  25. $this->site = $site;
  26. $this->role = $role;
  27. }
  28. }
  29. // 3. 访问类成员
  30. $obj = new Demo8('php中文网', '张三');
  31. echo $obj->getInfo() . '<br>';
  32. echo $obj->hello() . '<br>';


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议