面向对象概念

什么是对象?

一切可见的事物都可以是对象;
一切抽象的概念也可以是对象;

对象的组成元素

对象包含两部分

1、对象的组成元素

  • 指对象的数据模型,描述对象的数据,比如球员的身体数据、所属球队数据等;
  • 即对象的属性,或对象的成员变量;

2、对象的行为

  • 指对象的行为模型,描述对象可以实现的功能,比如球员移动、跳跃、投篮等;
  • 即对象的方法

对象的特点

  • 每一个对象都是独一无二的
  • 对象是一个特定事物,他的职能是完成特定功能(如不同的职业做不同的事)
  • 对象是可以重复使用的

什么是面向对象?

  • 就是编程过程中数据结构(数据组织方式)都通过对象的结构进行存储;
  • 本质:将要解决的问题通过属性、方法的形式进行存储、处理。

面向对象的好处

  • 描述方式更贴合真实世界,有利于大型业务的理解
  • 拉近与真实世界的距离

面向对象的基本思路

第一步:识别对象

  • 任何实体都可以被识别为一个对象

第二步: 识别对象的属性

  • 对象里存储的数据
  • 不同的业务逻辑,关注的数据不同,存储的属性也不同(数据表内容)

第三步:识别对象的行为

  • 对象自己属性数据的改变
  • 对象与外部发生的交互

面向对象的基本原则

对象内部是高内聚的(分工明确)

  • 对象只负责一项特定的职能(可大可小)
  • 所有对象相关的内容都封装到对象内部

对象对外是低耦合的(相互之间的依赖关系小,可提高代码的复用)

  • 外部世界只能看到对象的部分属性
  • 外部世界只能看到对象做的部分事情

类的概念

  • 物以类聚,把具有相似特性的对象归到一个类中
  • 类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型
  • 类的对象称为类的一个实例
  • 类的属性和方法统称为类成员

继承

子类通过extends关键字可以继承父类的属性和方法;
一个子类只能继承一个父类;

  • 父类里的类成员在子类中无需重复定义,子类可以直接调用父类的属性和方法;(public和protected)
  • 外部代码调用子类时,可以直接调用父类定义的类成员;(仅public)
  • 子类可以修改和调整父类定义的类成员;
    • 称之为重写,重写后,按照子类重写的功能执行;

静态

  • 静态属性用于保存类的公有数据;
  • 静态方法里只能访问静态属性;
  • 静态成员不需实例化对象就可以访问;
  • 通过static关键字定义静态属性和静态方法;
  • 类的内部可以通过self或者static关键字访问自身静态成员
    • 访问属性是要加上$符号;
  • 通过parent关键字访问父类静态成员
  • 通过类的名称在外部访问静态成员

Final

  • 对于不想被任何类继承的类可以在class前添加final关键字
  • 对于不想被子类重写的方法,可以在方法前添加final关键字

接口

  • 不同的类,实现同一个接口时,会有不同的表现,这叫做多态
  • 一个类可以实现(implements)多个接口;
  • 接口的方法都为空,只需要定义方法的名称和参数;
  • 实现接口的类必须有接口中定义的方法的具体实现内容
  • 接口提供了一个标准,保证多人开发时,定义的接口方法必须全部实现

抽象类

可用于有部分统一实现的方法,以及部分不同实现的方法的类
- 用abstract关键字定义抽象类和抽象方法
- 抽象类中可以包含普通方法,包含方法的实现;
- 继承extends抽象类的子类需要实现抽象类中定义的抽象方法

魔术方法

__tostring() : 当对象被当做字符串使用时自动调用
__invoke() : 当对象被当做方法是使用时自动调用
__call($name,$arguments);$name是方法名称,$argument是参数。当对象访问不存在的方法名称时,会自动调用;
__callStatic($name,$arguments) : 定义方法时要添加static关键字。$name是方法名称,$argument是参数。当对象访问不存在的静态方法时,会自动调用

不可访问属性:属性不存在或属性访问权限为private或protected;
__get($name) : 读取不可访问属性的值时会被调用,$name是属性名称;
__set($name, $value) : 给不可访问属性赋值时会被调用,$name是属性名称,$value是设定的值;
__isset($name) : 对不可访问属性使用isset()或empty()时会被调用,$name是属性名称;
__unset($name) : 对不可访问属性使用unset()时会被调用,$name是属性名称;

__clone() : 使用clone关键字时会被调用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值