opp基础:

用class关键字声明一个,

  • 类的成员有 类属性和类方法 和 构造方法

  • 构造器可以给类属性初始化赋值,每次实例化都会自动调用构造方法

  • 对象引用 $this-> 引用符:$this的意思就是本身,在$this中有个指针,谁调用它,他就指向谁,它只能再类内部使用。

  • 带有final关键字的方法为最终方法,不能够被重写,但可以被子类继承

实例演绎

  1. <?php
  2. //父类
  3. class Car
  4. {
  5. public $name; //类的属性前边加访问修饰符
  6. public $carType;
  7. private $member = 8.5;
  8. //构造器,给类的属性初始化赋值,每次实例化,都会自动调用
  9. public function __construct($name,$carType)
  10. {
  11. //$this-> 对象引用
  12. $this->name = $name;
  13. $this->carType = $carType;
  14. }
  15. //成员方法,
  16. public function getPrice()
  17. {
  18. return "{$this->name}的热卖车型是{$this->carType}";
  19. }
  20. //一个方法被添加了final关键字,则意味这个方式为最终方法,不能被重写
  21. final public function member()
  22. {
  23. return "本店的老用户,可以享受特殊优惠价格是所有车辆价格的{$this->member}折.";
  24. }
  25. }

类的继承和扩展

声明一个子类,继承和扩展父类,一个类为另一个类引用,实现类的扩展,这个类就是子类(扩展类),被继承的类就是父类(基类);

  • 类的继承和扩展 是通过 extends关键字来是实现的

  • opp就有单继承的特点,这是单继承带来程序的高耦合性,这是它的一个缺点,为解决这个问题,PHP提供了trait 解决方案—————待学

  • 类方法成员的重写与扩展: parent:: 关键字来调用类的成员方法,然后添加一些内容来实现类成员方法的重写; 也可以添加成员方法来实现类的功能扩展;

  • 子类能重写父类中带有final关键字的方法,声明为final的方法,为最终方法;最终方法不能被重写,但是可以被子类继承;

  • 类中的静态成员, static关键字,标志的是静态属性/静态方法, 静态成员只能为本类来调用,为所有实例所共享, 静态成员的访问方式是 self::,因为静态成员不能被实例化,所以静态成员的本质是类,只能使用类引用的方式访问就是self::方式;

实例演绎

  1. <?php
  2. //子类
  3. class Carson extends Car
  4. {
  5. protected $price; //添加属性,实现属性扩展
  6. static $discount = 8.8; //静态属性
  7. static $count=0;
  8. public function __construct($name,$carType,$price)
  9. {
  10. //是用parent:: 关键字来 继承父类的成员方法;
  11. parent::__construct($name,$carType);
  12. $this->price = $price;
  13. self::$count ++;
  14. }
  15. public static function getCount()
  16. {
  17. echo "目前关注本网站的用户有".self::$count."位";
  18. }
  19. //使用parent:: 关键字引用类成员方法,添加内容,来实现类成员方法的重写
  20. public function getPrice1()
  21. {
  22. return parent::getPrice()."正常价格是{$this->price},";
  23. }
  24. //添加类成员方法,来是实现类的扩展
  25. public function getDiscount()
  26. {
  27. //声明为private的成员属性不能被外部访问,但是可以在本类中调用
  28. return $this->getPrice1()."国庆节的优惠价格是".($this->price * self::$discount)."元.";//$discount是静态属性,须要通过self::来调用
  29. }
  30. }

类的实例化

自动加载器:通过spl_autoload_register函数来实现一个自动加载器,需要注意的是类名必须和文件名相同,才能实现类的自动加载功能

  1. <?php
  2. spl_autoload_register(function($className)
  3. {
  4. require $className.'.php';
  5. });

在客户端代码中 加载一个自动加载器,来实现类的自动加载

  • 通过instanceof 关键字检测一个对象是不是一个类的实例,返回值是bool值

  1. <?php
  2. require 'autoload.php';
  3. //使用NEW 关键字 将类赋给一个变量 实现类的实例化
  4. $car1 = new Carson('BMW','330i运动型',380000);//第一次实例化
  5. echo $car1->getDiscount();
  6. echo "<br>";
  7. //通过instanceof关键字检测 $car1是不是 Carson的是实例,是就返回true,不是则返回flase
  8. var_dump($car1 instanceof Carson);
  9. echo '<br>';
  10. $car = new Car('BMW','330i运动型');
  11. echo $car->member();//访问类中的最终方法
  12. echo '<br>';
  13. $car2 = new Carson('BWM','530li豪华型',450000);//二次实例化
  14. $car3 = new Carson('BWM','750li行政版',1450000);//三次实例化
  15. echo $car2->getDiscount();
  16. echo '<br>';
  17. echo $car3->getDiscount();
  18. echo '<br>';
  19. $car2::getCount();//每次实例化,自加一,来实现用户调用的检测

更多相关文章

  1. 作业内容:oop基础:请举例实例演绎以下难点 1. 类(对象抽象化的结
  2. php面向对象之对象成员,静态成员,继承
  3. 快递100账户错误详解-接口账号,业务,增值服务,票据和其他常见问
  4. 快递100参数错误-面单类错误(电子面单/发货单/模板)常见问题和解
  5. 调用快递100接口物流信息错误常见问题和解决方法
  6. 类与对象的概念,类与对象的特点及构造函数
  7. RAID5常见故障介绍及raid5故障后常规操作方法
  8. 面向对象编程(oop)初体验
  9. 给定一个数组$arr = [23,3,45,6,78,8,34],筛选其偶数成员组成新

随机推荐

  1. 用c语言编写爱心的代码是什么?
  2. C语言自定义函数(图文详解)
  3. c语言和vb语言的区别是什么?
  4. C语言中fputc函数的用法
  5. 小白程序员C++入门学习书籍(书单)
  6. c++中new的用法详解
  7. C程序的注释只能是一行吗?
  8. continue在C语言中什么意思?
  9. c++运算符重载的方法有哪些
  10. c语言中的“且”用什么符号表示?