博客列表 >演示类与实例,类属性和类方法,访问控制等(0721)

演示类与实例,类属性和类方法,访问控制等(0721)

丶久而旧之丶
丶久而旧之丶原创
2020年08月09日 23:35:59512浏览

类与对象


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

类的声明

  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.了解了怎么访问类中各种成员的属性和方法

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