面向对象:是基于面向过程的一种思想。
面向过程:强调的是功能行为。
面向对象:将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的。
面向对象的三大特性:封装,继承,多态
封装 将功能封装成一个个独立的单元,减小耦合,避免牵一发而动全身,方便对程序的修改
继承 代码重用,减少编码量,间接减少维护成本。
封装好处:
1.将变化隔离;
2.便于使用。
3.提高重用性。
4.提高安全性。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
private:关键字
A:用于修饰成员变量和成员方法。
B:被修饰的内容在其他类中是不可以被访问的。
注意:私有仅仅是封装的一种体现而已。
第一种理解方式:
封装:
首先,属性可用来描述同一类事物的特征, 行为可描述一类事物可做的操作,
封装就是要把属于同一类事物的共性(包括属性与行为)归到一个类中,以方便使用.
比如人这个东东,可用下面的方式封装:
人{
年龄(属性一)
身高(属性二)
性别(属性三)
做事(行为之一)
走路(行为之二)
说话(行为之三)
}
继承:
由于封装,使得有共同特征的一类事物的所有描述信息都被归于一类之中,但我们
知道,这并不是万能的,有些事物有共性,但还存在区别,比如教师,简单封装起来如
下:
教师{
年龄(属性一)
身高(属性二)
性别(属性三)
做事(行为之一)
走路(行为之二)
说话(行为之三)
教书(行为之四)
}
上面对"教师"的封装,与对"人"的封装基本上差不多,只是多了一个特征行为:教书,
教师有与人一样的共性, 但我们不能说"人教书",也就是不能把教书封装到"人"
之中去,教书是教师的特征行为之一. 为了省事地封装教师(代码的复用,这只是继
承存在的原因之一), 可以让教师去继承人,
如:
教师 extends 人{
教书(
行为之三
)
}
这样,我们就不用重新定义那些已经被"人"这一个类所封装的那些属性与行为了,
而只需要使用继承的方式,在人的基础上拓展教师专有的行为,即"教书"即可把教
师描述出来;这样的结果, 即是教师也同时拥有"人"之中所封装的一切属性与行为,
还拥有自己的特征行为"教书".
一、封装性
封装就是把抽取出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有被授权的操作(方法)才能对数据进行操作。
php提供了三种访问控制修饰符
public 表示全局,公共的,本类内部,类外部,子类都可以访问
protected 表示受保护的,只有本类或子类可以访问
private 表示私有的,只有本类内部可以访问
以上三种修饰符既可以修饰方法也可以修饰属性(变量),方法如果没有访问修饰符则默认是public,成员属性必须指定访问修饰符。