PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > 1月15日 学号:478291 类与对象

1月15日 学号:478291 类与对象

Lin__
Lin__ 原创
2020年02月09日 10:22:39 674浏览

类是一个具备某种功能的抽象模型,是一个抽象的概念,只有在被实例化之后才能使用。对象是类进行实例化后的产物,是一个实体。类是对象的模板,对象是类的实例。

创建类、添加类成员与实例化类

  1. 权限修饰符 class 类名{//定义类
  2. 权限修饰符 $属性名;//定义类属性
  3. 权限修饰符 function 方法名([参数]){}//定义类方法
  4. }
  5. $变量名=new 类名([参数]);//实例化类
  6. $变量名->属性名;//访问类属性
  7. $变量名->属性名=值;//为类属性赋值
  8. $变量名->方法名([参数]);//访问类方法
  • 定义类时可省略权限修饰符,但定义属性与方法时必须加上权限修饰符
  • 在类中声明的变量称为属性,在类中声明的函数称为方法
  • 类需要实例化之后才能使用,一个类可以实例化多个对象,每个对象都是独立的
  • 在类中实例化自身时可使用self()代替类名(),避免修改类名时需要重复修改代码
  • 访问类的属性和方法使用->,在类中调用自身的属性和方法可使用$this->操作符

构造方法

  1. function __construct([参数]){
  2. //方法体
  3. }
  • 方法名前带__的为系统预定义的魔术方法,无需用户调用,在满足一定条件下会被自动调用
  • 构造方法在类被实例化后第一个自动调用的方法,如果没有特别声明,会默认生成一个没有任何参数且内容为空的构造方法
  • 一个类只能有一个构造方法

权限修饰符

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

类的继承

  1. class 类名 extends 父类名{
  2. }
  • 一个类只能继承一个父类
  • 子类继承父类就可以访问父类的公共和受保护成员,子类中创建与父类名称相同的方法,即为重写父类的方法
  • 通过parnet()::来访问父类的方法

Trait

  1. trait 名称{
  2. 权限修饰符 $属性名;//定义属性
  3. 权限修饰符 function 方法名([参数]){}//定义方法
  4. }
  5. use 名称;//使用trait
  • trait是针对于PHP的单继承而产生的,实现代码复用,相当于将trait中的代码直接插入使用trait的类中
  • 一般在父类中使用,尽量不在最底层的子类中使用
  • trait不能被实例化,只能通过use关键字来使用
  • 优先级:当前类同名方法>trait同名方法>从父类继承的同名方法

示例

  1. <?php
  2. trait TropicalFruits{
  3. public $litchi='我是荔枝';//公共成员
  4. private $mango='我是芒果';//私有成员
  5. protected $pineapple='我是菠萝';//受保护成员
  6. public function setFruitName($litchi,$mango,$pineapple){
  7. $this->litchi=$litchi;
  8. $this->mango=$mango;
  9. $this->pineapple=$pineapple;
  10. echo $this->litchi.','.$this->mango.','.$this->pineapple;
  11. }
  12. }
  13. class Fruit{
  14. public $fruit='我是水果';
  15. public function __construct($fruit){//构造方法
  16. echo $this->fruit;
  17. $this->fruit=$fruit;
  18. }
  19. public function eat(){
  20. echo '每个水果有不同的食用方式';
  21. }
  22. use TropicalFruits;//使用trait
  23. }
  24. class Apple extends Fruit{
  25. public function eat(){//重写父类eat()方法
  26. echo '食用方式:洗净后,使用水果刀切块食用';
  27. }
  28. }
  29. $apple=new Apple('我是苹果');
  30. echo '<hr />';
  31. echo $apple->fruit;
  32. echo '<hr />';
  33. $apple->setFruitName('荔枝','芒果','菠萝');
  34. echo '<hr />';
  35. $apple->eat();

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