博客列表 >PHP基础 类与对象基本知识------PHP培训十期线上班 学号:510251 01月15日作业

PHP基础 类与对象基本知识------PHP培训十期线上班 学号:510251 01月15日作业

赵大叔
赵大叔原创
2020年02月13日 22:06:04588浏览

类与对象基本知识

基本知识

1、OOP 就是指面向对象编程

2、:是指对象的模板; 对象:是指类的实例。

3、 面向对象编程三步骤:创建类、添加类成员(属性<变量>、方法<函数>)、访问类成员(成员指向符->

—————————————————————————————————————————————————

3.1 创建类

  1. //1、创建类
  2. class
  3. {
  4. 类成员...
  5. }

3.2 添加类成员

  1. //2、添加类成员:类中变量叫属性,函数叫方法
  2. //创建属性:必须加访问限制符
  3. public $site = 'php中文网';
  4. //创建方法
  5. public function getSite()
  6. {
  7. //要访问当前类中的属性值,必须先实例化类(创建对象)
  8. $obj = new Demo1;
  9. return $obj->site;
  10. }

3.3 访问类成员

  1. // 类必须实例化后才可以访问里面的普通成员
  2. //实例化类: $变量名=new 类名([参数]);
  3. //3、访问类成员
  4. $obj = new Demo1;
  5. //访问类属性:$变量名->属性名;
  6. echo $obj->site;
  7. echo '<br>';
  8. //访问类方法:$变量名->方法名([参数]);
  9. echo $obj->getSite();

3.4 self和$this

self:引用当前类
$this:当前类的实例,伪对象,伪变量

—————————————————————————————————————————————————

4、构造方法

  1. public function __construct([参数])
  2. {
  3. //成员初始化
  4. $this->site = $site;//赋值
  5. }

4.1 使用二个下划线开始命名的方法:魔术方法
4.2 不需要用户主动调用,总是在满足一定条件的时候,被自动调用/触发
4.3 构造方法:当前类被实例化的时候自动调用,new
4.4 可以将类成员的初始化或实例化时的自动操作放里面

5、类成员访问控制

5.1 public,公共成员,在类内部、类外部和子类中都可以被访问
5.2 private,私有成员,只能够在类内部被访问
5.3 protected,受保护成员,能够类内部和子类中被访问

6、类的继承

  1. class 类名 extends 父类名
  2. {
  3. //子类会将父类中所有满足访问条件的成员全部继承过来
  4. }

6.1 通过parnet()::来访问父类的方法

7、Trait—-部分突破类的单继承限制

  1. //trait类的声明,使用类的语法,但不是类,不能实例化
  2. trait Test
  3. {
  4. pubilc function getInfor()
  5. {
  6. return;
  7. }
  8. }

7.1 相当于将trait中的代码直接复制到使用trait的类中,实现代码复用
7.2 trait类的声明,使用类的语法,但不是类,不能实例化
7.2 一般在父类中使用,尽量不在最底层的子类中使用
7.3 trait不能被实例化,只能通过use关键字来使用
7.4 优先级:当前类同名方法>trait同名方法>从父类继承的同名方法

演示代码

  1. <?php
  2. //trait--方法库
  3. trait Driver
  4. {
  5. public function getDriver()
  6. {
  7. return '我是trait司机:' .$this->driver;
  8. }
  9. }
  10. //1、创建类
  11. class CompanyCar
  12. {
  13. //引用trait
  14. use Driver;
  15. //2、添加类成员
  16. //创建属性
  17. public $bus ='';
  18. protected $manager ='';
  19. //private $bosscar ='';
  20. protected $driver ='';
  21. //创建方法
  22. public function user()
  23. {
  24. //实例化类
  25. //$obj = new CompanyCar();
  26. echo $this->bus .'<br>';
  27. echo $this->manager .'<br>';
  28. //echo $this->bosscar .'<br>';
  29. echo $this->driver .'<br>';
  30. }
  31. //构造方法
  32. public function __construct($bus, $manager, $driver)
  33. {
  34. $this->bus = $bus;
  35. $this->manager = $manager;
  36. //$this->bosscar = $bosscar;
  37. $this->driver = $driver;
  38. }
  39. /*public function getDriver()
  40. {
  41. return '我是父类司机:' .$this->driver;
  42. }*/
  43. }
  44. //继承
  45. class BossCar extends CompanyCar
  46. {
  47. //在子类中重写父类方法、扩展
  48. public function user()
  49. {
  50. //echo $this->bus .'<br>';
  51. //parent:: ---访问父类中的成员
  52. //::---范围解析符
  53. echo parent::user() ."车牌:" .$this->carNo .'//这里可以扩展父类中的方法' .'<br>';
  54. //echo $this->bosscar .'<br>';bosscar私有的,子类不不能访问
  55. }
  56. //创建只属于子类的属性
  57. public $carNo = '';
  58. public function __construct($bus, $manager, $driver, $carNo)
  59. {
  60. parent::__construct($bus, $manager, $driver);
  61. $this->carNo = $carNo;
  62. }
  63. /*public function getDriver()
  64. {
  65. return '我是子类司机:' .$this->driver;
  66. }*/
  67. }
  68. //3、访问类成员
  69. //实例化类CompanyCar()
  70. $obj = new CompanyCar('公司班车', '管理人员的车', 'alan');
  71. //在类的内部访问类成员
  72. echo $obj->user();
  73. echo '<hr>';
  74. //在类的外部访问类成员
  75. echo $obj->bus .'//外部只有public修饰的能被访问';
  76. echo '<hr>';
  77. //实例化子类
  78. $obj1 = new BossCar('KIA168', 'BENZ158', 'alan','YD1688888');
  79. //访问子类类成员
  80. echo $obj1->user();
  81. echo '<hr>';
  82. echo $obj1->getDriver();
  83. echo '<hr>';

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