博客列表 >类与对象(0115)

类与对象(0115)

暴风战斧
暴风战斧原创
2020年02月09日 01:47:52891浏览

编程思路

理解课件,将类与对象一步步的简化写法和重点内容重写,重在理解。

作业总结

1、类与对象比较抽象,不像之前的知识点,代码很直观好理解。这次类与对象视频看了3遍,过程中去恶补了下“面向对象编程”知识,开始抽象的概念终于能够具体理解并实操;
2、简单说面向对象就是为了代码高复用、灵活应对需求,继承、扩展和trait方法创造了面向对象的优点;
3、感觉到了这里我已经不是“hello world”初级阶段了,现在我是面向对象编程的程序员,逼格一下子就上来了!

练习代码与效果图

1.原生写法

  1. <?php
  2. //面向对象编程:三个步骤
  3. //1.创建类
  4. class Phone1
  5. {
  6. //2.添加类成员
  7. //变量叫属性,函数叫方法
  8. //2.1创建属性
  9. public $mi = '小米手机';
  10. //2.2创建方法
  11. public function getMi()
  12. {
  13. //要访问当前类中的属性需要先实例化
  14. $obj = new Phone1();
  15. return $obj->mi;
  16. }
  17. }
  18. //类必须实例化之后才可以访问里面的成员
  19. //3.访问类成员
  20. $obj = new Phone1();
  21. echo $obj->mi;
  22. echo '<br>';
  23. echo $obj->getMi();
  24. //可以简化代码
  25. ?>

  • 2.实现类中对象共享
  1. <?php
  2. //1.创建类
  3. class CPU
  4. {
  5. //实现在类方法中共享对象
  6. //2.添加类成员
  7. //2.1创建属性
  8. public $amd = '锐龙';
  9. //2.2创建方法
  10. public function getAmd()
  11. {
  12. //$this:当前类的实例(伪对象/伪变量)
  13. return $this->amd;
  14. }
  15. public function getIntel()
  16. {
  17. //实例共享
  18. return $this->amd;
  19. }
  20. }
  21. //3.访问类成员
  22. $obj = new CPU();
  23. //访问成员,使用成员指向符:->
  24. echo $obj->amd;
  25. echo '<br>';
  26. echo $obj->getAmd();
  27. echo '<br>';
  28. echo $obj->getIntel();
  29. ?>

  • 3.构造方法
  1. <?php
  2. //1.创建类
  3. class CPU1
  4. {
  5. //2.添加类成员
  6. //2.1创建属性
  7. public $A12;
  8. //2.2创建方法
  9. public function getA12()
  10. {
  11. return $this->A12;
  12. }
  13. //2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
  14. public function __construct($A12="A12处理器")
  15. {
  16. //成员的初始化
  17. $this->A12 = $A12;
  18. }
  19. }
  20. //3.访问类成员
  21. $obj = new CPU1();
  22. //访问成员
  23. echo $obj->A12;
  24. echo '<br>';
  25. echo $obj->getA12();
  26. ?>

  • 4.成员访问权限
  1. <?php
  2. //1.创建类
  3. //public:属于公共成员,类中、类外、子类均可访问
  4. //private:属于私有成员,只属于当前,只许在当前类中访问,不允许在类的外部及子类中访问
  5. //protected: 属于受保护的成员, 与private声明的成员一样,不允许在类外部访问, 但是可以在子类中访问
  6. class CPU2
  7. {
  8. //2.添加类成员
  9. //2.1创建属性
  10. private $A12;
  11. //2.2创建方法
  12. public function getA12()
  13. {
  14. return $this->A12;
  15. }
  16. //2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
  17. public function __construct($A12="A12处理器")
  18. {
  19. //成员的初始化
  20. $this->A12 = $A12;
  21. }
  22. }
  23. //3.访问类成员
  24. $obj = new CPU2();
  25. //访问成员
  26. //echo $obj->A12;
  27. echo '<br>';
  28. echo $obj->getA12();
  29. ?>

  • 5.类的继承
  1. <?php
  2. //类的继承:extends
  3. //1.创建类
  4. class CPU3
  5. {
  6. //2.添加类成员
  7. //2.1创建属性
  8. public $A12;
  9. //2.2创建方法
  10. public function getA12()
  11. {
  12. return $this->A12;
  13. }
  14. //2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
  15. public function __construct($A12="A12处理器")
  16. {
  17. //成员的初始化
  18. $this->A12 = $A12;
  19. }
  20. }
  21. //Son类继承自CPU3
  22. class Son extends CPU3
  23. {
  24. //2.继承父类成员
  25. //2.1继承属性
  26. //类会将父类中所有满足访问条件的成员全部继承过来
  27. //2.2继承方法,可扩展
  28. public function getA12()
  29. {
  30. //parent::引用当前父类,用于访问父类中的成员
  31. return parent::getA12()."价格:". $this->price;
  32. }
  33. //2.3创建只属于子类的属性
  34. public $price;
  35. //2.4构造方法(可将类成员初始化,当前类被实例化时自动调用)
  36. public function __construct($price,$A12="A12处理器")
  37. {
  38. parent::__construct($A12="A12处理器");
  39. //自有属性的初始化
  40. $this->price = $price;
  41. }
  42. }
  43. //3.访问类成员
  44. $obj = new CPU3();
  45. //实例化子类
  46. $son = new Son('$100','A12处理器');
  47. echo $son->getA12();
  48. ?>

  • 6.trait实现代码复用
  1. <?php
  2. //trait:改变了单继承的模式,实现了代码复用
  3. //声明一个trait类,使用的是类的语法,不是类,不能实例化
  4. trait Company
  5. {
  6. public function getA12()
  7. {
  8. return '名称:'. $this->A12 .'厂商:' . $this->company;
  9. }
  10. }
  11. //1.创建类
  12. class CPU5
  13. {
  14. use Company;
  15. //2.添加类成员
  16. //2.1创建属性
  17. public $A12;
  18. public $company;
  19. //2.2调用trait方法
  20. //2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
  21. public function __construct($A12,$company)
  22. {
  23. //成员的初始化
  24. $this->A12 = $A12;
  25. $this->company = $company;
  26. }
  27. }
  28. //Son类继承自CPU3
  29. class Son extends CPU5
  30. {
  31. //2.继承父类成员
  32. //2.1继承属性
  33. //类会将父类中所有满足访问条件的成员全部继承过来
  34. //2.2创建只属于子类的属性
  35. public $speed;
  36. //2.3重写父类构造方法
  37. public function __construct($A12,$company,$speed)
  38. {
  39. parent::__construct($A12,$company);
  40. //自有属性的初始化
  41. $this->speed = $speed;
  42. }
  43. //2.4重写父类方法
  44. public function getA12()
  45. {
  46. return parent::getA12().'速度:'. $this->speed;
  47. }
  48. }
  49. //3.访问类成员
  50. //实例化子类
  51. $son = new Son("A12处理器","苹果",'1200Hz');
  52. echo $son->getA12();
  53. ?>

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