Blogger Information
Blog 119
fans 3
comment 1
visits 94620
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础 类与对象基本知识------PHP培训十期线上班 学号:510251 01月15日作业
赵大叔
Original
586 people have browsed it

类与对象基本知识

基本知识

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>';

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