php基础3

面向对象

一. 面向对象的概念

  • 生活角度:
    1. 类:人类 杯子
    2. 对象:小明 小红 水杯 茶杯
  • 官方角度
    1. 类: 具有相同特征的事物的总和
    2. 对象: 类中某一个具体的事物
    3. oop: object oriented programming 指面向对象编程

二.定义一个类

  1. 采用关键字class来定义
  2. 类名的书写规范: 首字母大写,多个单词之间使用驼峰法, 不能以数字开头,中间可以使用数字,_组合
  3. 类名下边是大括号
  4. 严格区分大小写

三.创建对象

  1. 类定义完之后没有任何意义,就跟函数定义完之后没有意义是一样的.
  2. 函数定义完之后需要调用.
  3. 同样的类定义完之后需要产生对象才能使用.
new到的结果就是一个对象
方式一
$jieyin = new Person();
var_dump($jieyin);
方式二
$person = 'Person';
$guangqiang = new $person();
var_dump($guangqiang);
方式三
$yangyang = new $guangqiang();
var_dump($yangyang);
方式四
$gaoqiang = clone $guangqiang;
var_dump($gaoqiang);

总结: 得到对象有四种方法, 我们只需要记住第一种

  • 得到新对象
    1.通过关键字new得到新对象
    2.通过关键字clone得到新对象
    总结: 得到不同的新对象是通过以上两种方法,区分新对象是通过标识符[1]来区分

四. 类中的成员属性和成员方法

  1. 类的组成: 成员属性和成员方法
  2. 成员属性的定义:
    1. 采用默认的关键字public来定义
    2. 定义属性跟定义变量一模一样 $name
  3. 成员属性的调用:
    类外 对象->属性名 注意: 属性前边没有$
    类内 $this->属性名 注意: 属性前边没有$
  4. 成员方法的定义
    1. 默认采用关键字public, public可以省略
    2. 怎么定义函数也就怎么定义方法 例子: public function eat(){}
    3. 方法名: 采用驼峰法或者下划线法来定义
  5. 成员方法的调用
    类外 对象->方法名()
    类内 $this->方法名()
    [注意]
    之前在函数中可输出/有返回值/传递参数
    同样的在方法中也可以输出/有返回值/传递参数

五. 魔术方法(构造方法)

  • 以__开始,在某时某刻被自动调用的方法,就是魔术方法
  • 对于魔术方法: 相应的方法名都有固定的格式
  • 构造方法

public function __construct()
{
}

[注意]

  1. 构造方法是在new对象(实例化对象)的时候执行该方法
  2. 一般是在实例化对象时给属性进行初始化赋值操作
  3. 构造方法中可以定义形式参数
  4. 实际参数在实例化对象的时候传递

六.$this关键字

  1. 代表当前对象
  2. $this只能在类内使用
  3. 类内: t h i s − > 属 性 名 属 性 名 前 边 没 有 this->属性名 属性名前边没有 this>
  4. 类内: $this->方法名()

七. 魔术方法(析构方法)

  • 定义:

public function __destruct()
{
}

  • 执行: 对象被销毁,或者程序执行结束之后被调用

八. 面向对象的三大特征:

  1. 封装: 在类中使用不同的方法实现不同的功能就是封装
  2. 继承: 就相当于咱来继承咱爹的遗产
  3. 多态(重写):

九. 访问控制修饰符(访问修饰限定符)

public(公共的)protected(受保护的)private(私有的)
类型类外类内
public可以可以
protected不能可以
private不能可以
  • 总结:
    1. 只有public修饰的成员(属性和方法)可以在类外访问,其他的不可以
    2. 在类内都可以访问

十. 面向对象的三大特性:

  • 封装: 一个类就是一个封装
  • 继承 [重点]
    1. 继承需要通过关键extends 来实现继承
    2. 继承时可以继承成员属性和成员方法
    3. 通常情况下, 把被继承的类叫做父类,(也叫作基类) , 继承的类叫做子类, (也叫作扩展类)
    4. 继承可以有继承连
    5. 继承只能是单继承
    6. 只有public 和protected修饰的成员可以被继承,而private修饰的成员不能被继承
类型类外类内继承链上的类内
public可以可以可以
protected不可以可以可以
private不可以可以不可以

[总结]: private修饰的成员不能被继承

  • 多态(重写)
    1. 定义: 首先要有继承,当子类的成员(属性和方法)重写了父类的成员时,这是我们使用的是子类的成员.
    2. 重写:
      1. 完全重写
      2. 不完全重写: 我既要体现子类的成员,也要体现父类的成员
        调用父类的方法:parent::walk();
      3. 在重写时,普通方法可以重写,同样的魔术方法也可以重写
    3. 在类内访问:
    • 当父类是public时,子类只能是public
    • 当父类是protected时,子类只能是public/protected
    • 当父类是private时,子类可以是public/protected/private
  • public权限最大 protected居中 private权限最小

十一. 类常量

  • 定义: 采用关键字const来定义常量
    例子: const PIV = 3.14;
    1. 在类外定义常量define()/const
    2. 在类内只能通过const来定义
  • 调用
    类外 对象::常量名(类名::常量名)
    类内 self::常量名(类名::常量名/$this::常量名)
  • self:
    1. self: 表示当前类
    2. self跟对象没有任何关系,只跟声明的当前类有关
    3. self只能在类内使用

十二. 静态成员

  • 静态成员属性的定义:
    public static $name;
  • 静态成员属性的访问:
    调用(访问)
    • 类外 对象::属性[这种不常用] (类名::属性)
      [注意]属性前边必须有$
    • 类内 self::属性(类名::属性)
      [注意]:属性前边必须有$
  • 静态成员方法的定义:

public static function buy()
{
}

  • 静态成员方法的访问:
    调用(访问)
    • 类外: 对象::方法名()[不常用] (类名::方法名())
    • 类内: self::方法名() (类名::方法名())

十三. 魔术方法

  • __construct() 触发时机: 在实例化对象的时候自动被调用
  • __destruct() 在对象被销毁或者程序执行结束之后,自动调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值