博客列表 >1203课程作业,面向对象编程——php第九期线上班

1203课程作业,面向对象编程——php第九期线上班

木易
木易原创
2020年02月03日 14:43:13625浏览

1203课程作业

demo1

  1. <?php
  2. //oop基本步骤
  3. //1、创建类
  4. class Demo1
  5. {
  6. //2、添加类成员
  7. //在类中的变量和函数,和程序中的变量和函数有区别,添加了访问限制
  8. //变量=>属性,函数=>方法,访问限制符 成员
  9. //创建属性
  10. public $site = 'php中文网';
  11. //创建方法:输出当前类的属性$site
  12. public function getSite()
  13. {
  14. // 第一步:类的实例化
  15. $obj = new Demo1;
  16. // 第二步返回类属性
  17. return $obj->site.'欢迎您';
  18. }
  19. }
  20. //3、访问类成员
  21. $obj = new Demo1;
  22. //访问属性:对象成员访问符:->
  23. echo $obj->site.'<br>';
  24. echo $obj->getSite();

demo2

  1. <?php
  2. //1、创建类
  3. class Demo2
  4. {
  5. //2、添加类成员
  6. public $site = 'php中文网';
  7. public $role = '讲师';
  8. public function getSite()
  9. {
  10. // 第一步:类的实例化 self类名的引用,始终与当前类名绑定
  11. // $obj = new self;
  12. // 第二步返回类属性
  13. return $this->site.'欢迎您';
  14. }
  15. public function getRole()
  16. {
  17. // 第一步:类的实例化
  18. // $obj = new self;
  19. // 第二步返回类属性
  20. // $this是当前类的实例引用,始终与当前类的实例绑定
  21. return $this->role;
  22. }
  23. }
  24. //3、访问类成员
  25. $obj = new Demo2();//函数调用
  26. //访问属性:对象成员访问符:->
  27. echo $obj->site.'<br>';
  28. echo $obj->getRole();

demo3

  1. <?php
  2. //1、创建类
  3. class Demo3
  4. {
  5. //2、添加类成员
  6. public $site ;
  7. public $role ;
  8. public function getInfo()
  9. {
  10. return '我是'.$this->site.$this->role;
  11. }
  12. // 构造方法:1、类实例的初始化2、自动完成在类实例创建过程中的操作
  13. public function __construct($site,$role)
  14. {
  15. //1.初始化类成员
  16. $this->site =$site;
  17. $this->role = $role;
  18. //2.创建类实例
  19. // $obj =new self;
  20. // 3.添加类实例成员
  21. // $obj->site = $this->site;
  22. // $obj->role = $$this->role;
  23. // 在类实例化时自动会执行
  24. echo $this->getInfo();
  25. //4.返回类实例
  26. // return $obj;
  27. }
  28. }
  29. //3、访问类成员
  30. new Demo3('php中文网','讲师');

demo4

  1. <?php
  2. //访问控制,实现类的封装
  3. //1、创建类
  4. class Demo4
  5. {
  6. //2、添加类成员
  7. //private $name = 'yangkai';
  8. public $site;
  9. // 如果不想让属性在类的外部被访问,可以将该属性的访问控制改为:private、protected
  10. protected $role;
  11. public function getInfo()
  12. {
  13. return '我是' . $this->site . $this->role;
  14. }
  15. // 构造方法:
  16. public function __construct($site, $role)
  17. {
  18. $this->site = $site;
  19. $this->role = $role;
  20. }
  21. // 外部无权访问,是为了防止非法访问,而不是禁止访问
  22. //为这样的属性创建一个访问器方法,来过滤用户的访问请求
  23. public function __get($name)
  24. {
  25. // 仅允许用户名是admin的用户访问,其他访问返回,无权访问
  26. $username = $_GET['username'] ?? '';
  27. if (isset($username) && $username === 'admin') {
  28. return isset($this->$name) ? $this->$name : '属性未定义';
  29. } else {
  30. return '无权访问';
  31. }
  32. }
  33. // public function getName()
  34. // {
  35. // return isset($this->name) ? $this->name : '不存在该属性';
  36. // }
  37. // 魔术方法:__get($name)属性重载
  38. }
  39. //3、访问类成员
  40. $obj = new Demo4('www.php.cn', '讲师');
  41. echo $obj->name;
  42. //echo $obj->role . '<br>';
  43. //echo $obj->getRole();
  44. echo '<br>';
  45. //echo $obj->getName();
  46. //__get($name),__set($name,$vaule),__isset($name),__unset($name) 属性重载

demo5

  1. <?php
  2. //类的继承
  3. //1、创建类
  4. class Demo5
  5. {
  6. //2、添加类成员
  7. public $site;
  8. protected $role;
  9. public function getInfo()
  10. {
  11. return '我是' . $this->site . '讲师:' . $this->role;
  12. }
  13. // 构造方法:
  14. public function __construct($site, $role)
  15. {
  16. $this->site = $site;
  17. $this->role = $role;
  18. }
  19. }
  20. class Demo5_1 extends Demo5
  21. {
  22. private $course;
  23. public function __construct($site, $role,$course)
  24. {
  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('www.php.cn','木易','php');
  36. echo $sub->getInfo();

demo6

  1. <?php
  2. //trait:代码复用方式,用来扩展当前类的功能
  3. //trait当成一个公共方法库
  4. //trait使用了类的定义语法,但是不是类,不可以实例化
  5. trait Test
  6. {
  7. public function getInfo()
  8. {
  9. return '我是' . $this->site . '讲师:' . $this->role;
  10. }
  11. }
  12. //1、创建类
  13. //宿主类
  14. class Demo6
  15. {
  16. //导入trait类库
  17. use Test;
  18. //2、添加类成员
  19. public $site;
  20. protected $role;
  21. // public function getInfo()
  22. // {
  23. // return '我是' . $this->site . '讲师:' . $this->role;
  24. // }
  25. // 构造方法:
  26. public function __construct($site, $role)
  27. {
  28. $this->site = $site;
  29. $this->role = $role;
  30. }
  31. }
  32. //trait可以用在类的继承上下文环境中
  33. class Demo6_1 extends Demo6
  34. {
  35. private $course;
  36. public function __construct($site, $role,$course)
  37. {
  38. parent::__construct($site, $role);
  39. $this->course=$course;
  40. }
  41. // 重写父类的方法
  42. public function getInfo()
  43. {
  44. return parent::getInfo().',负责的课程是:'.$this->course;
  45. }
  46. }
  47. // 优先级:当前类中的同名方法>trait类中的同名方法>父类中的同名方法
  48. //3、访问类成员
  49. $obj = new Demo6('php.cn','muyi');
  50. echo $obj->getInfo();
  51. echo '<br>';
  52. $obj = new Demo6_1('www.baidu.com','木易','讲师');
  53. echo $obj->getInfo();
  54. //$sub = new Demo5_1('www.php.cn','木易','php');
  55. //echo $sub->getInfo();

demo7

  1. <?php
  2. //接口
  3. //对象的模板是类,类的模板是接口
  4. //面向接口编程是最重要的编程思想之一,许多高级应用严重依赖于它
  5. //接口是一种约定,定义了实现它的类 中必须实现的方法
  6. //接口中没有方法的具体实现,所以不可以实例化
  7. //接口中定义工作类的方法原型
  8. interface iDemo
  9. {
  10. //接口方法
  11. public function getInfo();
  12. public function hello();
  13. }
  14. //1、创建类
  15. class Demo7 implements iDemo
  16. {
  17. //2、添加类成员
  18. public $site;
  19. protected $role;
  20. public function getInfo()
  21. {
  22. return '我是' . $this->site . '讲师:' . $this->role;
  23. }
  24. public function hello()
  25. {
  26. return 'hello 大家晚上好';
  27. }
  28. // 构造方法:
  29. public function __construct($site, $role)
  30. {
  31. $this->site = $site;
  32. $this->role = $role;
  33. }
  34. }
  35. //3、访问类成员
  36. $obj =new Demo7('php.cn','muyi');
  37. echo $obj->getInfo().'<br>';
  38. echo $obj->hello().'<br>';

demo8

  1. <?php
  2. //抽象类:有抽象方法,也有具体方法
  3. //接口中全是抽象方法,
  4. //共同之处:都不可以实例化,原因内部有抽象方法
  5. abstract class Chouxiang
  6. {
  7. //抽象方法
  8. abstract public function getInfo();
  9. //具体方法/或者已实现方法
  10. public function hello()
  11. {
  12. return 'hello 大家晚上好';
  13. }
  14. }
  15. //1、创建类
  16. //工作类
  17. class Demo8 extends Chouxiang
  18. {
  19. //2、添加类成员
  20. public $site;
  21. protected $role;
  22. public function getInfo()
  23. {
  24. return '我是' . $this->site . '讲师:' . $this->role;
  25. }
  26. // 构造方法:
  27. public function __construct($site, $role)
  28. {
  29. $this->site = $site;
  30. $this->role = $role;
  31. }
  32. }
  33. //3、访问类成员
  34. $obj =new Demo8('php.cn','木易');
  35. echo $obj->getInfo().'<br>';
  36. echo $obj->hello().'<br>';

手抄作业


总结

1、创建类
2、添加类成员
3、访问类成员

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