- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
笔记(PHP面向对象)
面向对象
1)类简单介绍
①类包括:属性与方法
②操作:实例化访问方法、访问属性
③访问类型:类外访问、类内访问
所有语言的类都离不开以上三点,只不过是不同语言其表达形式不同而已
按照某个方法,能制造出一个衣柜
类相当于一个方法,按照这个方法就可以制造出一个对象了
如何用类来产生对象?
New 类名 () -- 返回的是对象Object,而对象里全是属性及属性值(没有方法)
2)属性值定义问题
不能是:表达式1+2 的值
不能是:函数返回值如time ()
3)类中的函数名的命名问题
另外:类内的函数名与类外的函数名相同也是没问题的
4)构造函数:__construct()
在类实例化时,即new 一个对象时,自动调用构造函数
构造函数传参,并影响对象
5)析构函数
只要调用了对象,那么在对象销毁时,便自动执行
对象默认是引用传值的 (重要)
6)对象销毁机制
7)对象作为参数
问题来了?
类的一个权限控制bug:
所有对象 以类为单位 ( 多对 1)
把一个对象作为另一个对象的参数传进类里使用了,造成了混淆,也不符合逻辑;
对象通常是调用其方法,而不应该作为参数,而且每一个对象对应一个类内容,而不应该能
修改另外一个对象的内容,每个对象只能是修改自己的;
下面例子就是a对象作为b 对象的参数了,通过b 修改了a 的内容
面向对象三大特性:封装、继承、多态
①权限修饰符
作用:用来说明 属性/方法的权限特点,写在 属性/方法前面
②三种类型
private私有的:只能在类内调用
protected保护的:可在类内和子类中调用
public 公共的:在任何地方都可以
8)特征之一:封装性
属性封装性总结:
方法封装性总结:
9)用类连接数据库
10)类内定义属性与访问的位置问题
①属性只能在类内函数外定义;函数外也不能echo输出任何内容
②访问属性/方法只能在类内函数内访问
11)特征之二:继承 - 子类
父类的protected/public 的属性与方法都继承过来,并可以访问
父类的private 的属性与方法也继承过来,但不可访问,无权调用
父类有的,都继承过来,并且可以修改 (即新的内容覆盖全部掉旧的内容)
父类没的,子类里可以添加
子类继承时,属性与方法的权限继承变化问题:
继承时,权限只能越来越宽松或不变,而不能越来越严格
构造方法也是可以继承的
也可以修改
(重要)问题来了?我只不过是想在子类对构造函数添加一些自己要用的数据而已
这又认证了:子类与父类中的函数名相同时,相当于函数的重写,意思是对父类中的函数内
容全部删除掉后,在子类函数里重新写入新的内容,所以原先父类中内容就没了
解决:在子类的构造函数中,再访问一下父类的构造函数:parent::__construct()
注意:构造函数名与类名相同这是PHP4 时代的残留,不建议这样写
12)特征之三:多态
例子:
材料 1:一个手电筒、3 张不同颜色的玻璃
做法1:一个手电筒都能装上这3 张玻璃,换不同颜色的玻璃就射出不同颜色的光,这里只
用了一个手电筒
材料2:三个手电筒、3 张不同颜色的玻璃
做法2:三个手电筒都只能装上各自规定的颜色玻璃,如红光手电筒就只能装上红色的玻璃,
这里却用了三个手电筒
上面2 个例子中,第 1个便是 多态
下面实例,是从PHP 的多态转换成java 形式的多态:
Php 多态:手电筒类,红、蓝、绿玻璃
实现:颜色玻璃作为实参,传进手电筒类里的函数里,打开手电筒,照射出不同颜色的光
发现:这时函数形参并没有声明类型,因为PHP 本身就是多态
php 与java 实现多态,进行对比后,再提出问
题:传参时声明类型的问题?
继续操作:声明函数参数的类型,限制PHP 传参的灵活性
问题:这时只可传RedGlass对象类型,其它对象的就不可以了?
解决:
定义一个父类为Glass(玻璃),各种颜色的玻璃为子类并继承父类
函数参数类型改成父类Glass,传进来的实参是子类
13)静态属性、静态方法
在属性和方法前加static 修饰,就变成了静态属性 / 静态方法
特点:
A、静态属性存放在类的空间中,只要类声明完毕,该属性就存在类中了,所以直接可以用
文档评论(0)