PHP(16)面向对象基础

面向对象基础

关键字说明

1、类:class,是定义面向对象主体的最外层结构,用来包裹主体的数据和功能(函数)。类是一类具有共性事务的代表,代表的是事务的共性。
2、对象:object,是对某类事务的具体代表,也是实际数据和功能操作的具体单位,也被称为实例(instance)。
3、实例化:new,从一个抽象的概念(类)得到一个符合抽象概念的具体实例(对象)的进程。
4、类成员:member,指类class结构中的所有内容,类成员里有三种
1)方法:method,本质是在类class结构中创建的函数,也称为成员方法或者成员函数
2)属性:property,本质是在类class结构中创建的变量,也称之为成员变量
3)类常量:constant,本质是在类class结构中创建的常量

面对对象简单技术实现

1、定义类基本语法:class类名{}
在这里插入图片描述
2、类class是一种结构,如果写好没有语法错误的情况下,代码不会执行(与函数定义一样),也无法打印输出
3、类的命名规范:类的命名规范与函数类似,区别在于认为的通常会将类名的首字母大写
4、如果碰到多单词组成的类名,通常使用驼峰法(大写单词的首字母)
在这里插入图片描述
5、类无法直接访问,需要得到类的具体对象才能访问,可以通过实例化new来实现对象的创建:new类名【()】(小括号可有可无)

在这里插入图片描述
在这里插入图片描述
6、对象创建后可以使用或者打印,但是为了方便使用,使用变量保存实例化对象。

类成员

定义:类成员,指直接定义在类结构{}内部的一级成员,即直接依赖{}的成员。
1、成员变量:就是在类结构{}下直接定义的变量,但是定义的方式与普通变量稍微有点不同,需要在变量名字前使用一个关键字public,定义语法:public变量名字【=值】;,成员变量可以赋值也可以不赋值。
在这里插入图片描述
2、成员变量访问:成员变量必须通过对象才能进行访问,也就是需要先通过实例化的到对象,然后通过对象实现对成员变量的访问:访问语法:$对象名->属性名;
在这里插入图片描述
注意:删除属性和新增属性通常使用较少,更多的属性操作是访问和修改

3、成员方法:就是在类结构{}下定义的函数,函数内部的内容与原来函数结构一样,可以有分支、循环结构等
在这里插入图片描述
5、类常量:类常量是在类结构{}下定义的常量,类常量的定义只能使用一种方式:const 常量名=值;
在这里插入图片描述
注意:类常量不是由对象来进行访问,所有暂时不做访问讲解,到后面知识再将。

访问修饰限定符

定义:访问修饰限定符是一种用在属性或者方法前的修饰关键字,是用来控制属性或者方法的访问位置的。
1、首先需要明白一组概念类的内部和外部
1)类内部:是指类定义的内部,即类名后{}内部
2)类外部:是指类定义的外部内容,即类名后{}之外的所有地方
3)类成员的访问权限控制是内部访问(私有)、链内部访问(受保护)和全部访问(公有)
2、public:公有,即表示所修饰的内容(属性或者方法)可以在当前类的内部访问,也可以在类的外部访问
在这里插入图片描述
3、protected:受保护:表示所修饰的内容只能在类内部访问(在学习继承时再讲)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、private:私有,表示所修饰内容只能在当前类内部访问
5、访问修饰限定符不只是限定属性,也可用来限定方法
方法没有修饰限定符默认public。

类内部对象

定义:类成员属性和方法的访问必须通过对象才能访问,类外部可以通过实例化得到类对象从而实现成员访问,但是类内部又不能访问类外部的对象(未知),此时类内部就内置一个对象$this代表来访问对象。
1、尝试在类内部方法中访问属性
在这里插入图片描述
在这里插入图片描述
注意:方法本质是定义在类内部的函数,因此受制于作用域的问题,在方法内部访问的变量系统认定为局部变量(必须内部定义或者参数传入),否则就会提示未定义

2、类内部访问类成员,需要通过对象来进行访问
在这里插入图片描述
3、通过$this访问
在这里插入图片描述
4、由上述代码可见:$this代表的是对象,而$this所在环境为类内部的方法内部,所以$this对象是在类内部访问,因此可以访问所有的属性和方法,不受访问修饰限定符限制。
5、$this,class和new之间的关系原理
1)class是定义类结构,属于非执行段代码,因此会被加载到代码段(编译阶段)
2)new是实例化对象,先判断类在内存(代码段)是否存在

	1、类不存在,报错;
	2、类存在,将类内部的属性部分复制一份,然后在内存(堆区)开辟一块内存空间,将属性放在属性放到里面,同时内部有一个指针指向类的内存空间(代码段)
	3、对象访问属性即访问的是对象空间里储存的部分
	4、对象访问方法是对象通过内部指针找到类空间中的方法,然后在内存(栈区)开辟运行

3)$this是系统在方法内置的对象通用名字

	1、对象在调用方法的时候,系统会自动找到对象所保存的内存地址(堆区),然后把地址赋值给\$this
	2、方法内部的\$this就代表调用当前\$this所在方法的外部对象
	3、\$this的本质是函数内部的一个局部变量,只是系统自动对其进行赋值,而且一定是调用方法的对象本身

面向对象开发规范

定义:面向对象规范是指我们在开发时,在技术没有强制规定的情况下,应该采用什么样的方式来协助我们进行代码的书写。
1、属性的初始化:属性是类对于同类事务所抽离出来的共性数据,本身在类结构中没有价值,是当具体对象产生之后,属于对象本身的。因此在进行类中定义属性的时候,通常不会对属性进行初始化,除非属性本身的值也具有共性。
2、属性的初始化:属性在类中初始化的基本判定就是数据是否初始化的时候统一,如果数据统一(即初始化),那么所有对象在生成之后,就拥有对应的值;如果不初始化,意味着所有对象在生成后,应该对属性进行赋值。
3、访问修饰限定符选择:访问修饰限定符是用来限制类成员被对象访问时对象所处位置的。访问的权限从public、protected、private依次变小。使用规则如下:

1)设定好的类成员本身不会被外部用到,那么应该使用private或者protected
2)设定好的类成员一定会给外部访问,使用public
3)属性通常private居多,如果需要外部访问属性,通常会定义相关方法来实现属性的查看和修改,因此可以在方法内对数据逻辑进行代码控制,安全
4)总之一句话:尽可能增加类对成员的控制(尽可能多使用private,少使用public)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值