Blogger Information
Blog 48
fans 0
comment 0
visits 34179
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
演示类与实例,类属性和类方法,访问控制等(0721)
丶久而旧之丶
Original
526 people have browsed it

类与对象


  • 变量的功能:用于数据的复用
  • 函数的功能:用于代码的复用
  • 对象的功能:用于属性(变量)和方法(函数)的复用
  • 类:对象的模板(用于生成对象)

类的声明

  1. <?php
  2. // 类的声明
  3. class User
  4. {
  5. // 类成员
  6. // 1.类属性
  7. // 2.类方法
  8. }
  9. // 类的实例化-对象(用于创作的一个个独立的个体)
  10. $user = new User;
  11. var_dump($user);
  12. echo '<hr>';
  13. // 检测对象是否某个类的实例
  14. var_dump($user instanceof User);
  15. echo '<hr>';
  16. // 也可将类名放在变量中(动态类)
  17. $name = 'User';
  18. $j = new $name;
  19. var_dump($j);
  20. echo '<hr>';
  21. // 也可以获取类名称
  22. echo get_class($j);

访问类属性

  1. <?php
  2. class User
  3. {
  4. // 类成员
  5. // 1.类属性(变量)
  6. // 也支持数组,heredoc,nowdoc
  7. public $name = '小殇';
  8. public $id = [1, 2, 3, 4];
  9. // 静态属性:如果一个属性仅使用一次,可以用static关键字,通过类直接调用
  10. public static $location = '江西';
  11. // 抽象属性(没有被初始化的属性,默认为null)
  12. public $skill;
  13. // 2.类方法(函数)
  14. }
  15. // 类的实例化-对象(用于创作的一个个独立的个体)
  16. $user = new User;
  17. // 访问类属性
  18. echo $user->name, '<hr>';
  19. print_r($user->id);
  20. echo '<hr>';
  21. // 通过类访问静态属性
  22. echo User::$location, '<hr>';
  23. // 访问抽象属性
  24. var_dump($user->skill);

访问类方法(调用外部成员)

  1. <?php
  2. class User
  3. {
  4. // 类成员
  5. // 1.类属性(变量)
  6. public $name = '小殇';
  7. public $sex = '男';
  8. // 2.类方法(函数)
  9. // 在类的内部$this代表着当前类的实例化对象 self代表当前类名
  10. public function white()
  11. {
  12. // 方法中声明的变量不是属性,是私有变量
  13. $love = '打游戏';
  14. // 访问外部成员(函数,变量)
  15. // 函数可以直接调用,变量可以用关键字global声明或者$GLOBALS超全局变量调用
  16. $a = up();
  17. return "姓名:{$this->name},性别:{$this->sex},爱好:{$love},人生格言:{$a}," . $GLOBALS['motto'];
  18. }
  19. // 依赖注入:通过参数方式调用外部变量
  20. public function white1(closure $up, string $motto)
  21. {
  22. return $up() . $motto;
  23. }
  24. // 静态方法:不依赖实例直接用类访问不能使用$this->name,$this->sex
  25. public static function white2()
  26. {
  27. return "所在地:" . self::$location;
  28. }
  29. }
  30. // 类的实例化-对象(用于创作的一个个独立的个体)
  31. $user = new User;
  32. function up()
  33. {
  34. return '好好学习';
  35. }
  36. $up = function () {
  37. return '好好学习';
  38. };
  39. $motto = '天天向上';
  40. echo $user->white(), '<hr>';
  41. echo $user->white1($up, $motto);


类的访问控制(封装)

  1. // 访问控制
  2. class User
  3. {
  4. // 类成员
  5. // 1.类属性(变量)
  6. // public:公共成员,类的内部,外部,子类都能访问
  7. public $name = '小殇';
  8. // private:私有成员,仅本类使用,外部和子类都不能访问
  9. private $sex = '男';
  10. // protected:受保护的成员,本类和子类可使用,外部不能访问
  11. protected $money = 5000;
  12. public function white()
  13. {
  14. return "姓名:{$this->name},性别:{$this->sex},财产:{$this->money}";
  15. }
  16. }
  17. class Rob extends User
  18. {
  19. public function white()
  20. {
  21. return "姓名:{$this->name},性别:{$this->sex},财产:{$this->money}";
  22. }
  23. }
  24. $user = new User;
  25. echo $user->white(), '<hr>';
  26. $rob = new ROB;
  27. echo $rob->white(), '<hr>';
  28. echo $user->money;

public(公共成员)

private(私有成员)

protected(受保护成员)


类的继承

  1. <?php
  2. // 类的继承(就是类的复用)
  3. class User
  4. {
  5. // 类成员
  6. // 1.类属性(变量)
  7. protected $name = '小殇';
  8. public function white()
  9. {
  10. return "姓名:{$this->name}";
  11. }
  12. }
  13. // 子类
  14. class Rob extends User
  15. {
  16. // 1.扩展
  17. // 属性扩展
  18. protected $money = 5000;
  19. // 方法扩展
  20. public function white()
  21. {
  22. return parent::white() . ",财产:{$this->money}";
  23. }
  24. // 2.重写
  25. // 属性重写
  26. protected $name = '小明';
  27. // 方法重写
  28. public function white1()
  29. {
  30. return "{$this->name}有{$this->money}元";
  31. }
  32. }
  33. $rob = new Rob;
  34. echo $rob->white(), '<hr>';
  35. echo $rob->white1();
  • 类或者方法中加入final关键字就会不允许类被继承或者方法被重写

扩展

重写


总结

1.了解类和对象的概念
2.了解了怎么访问类中各种成员的属性和方法

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