1)继承
关键字:extends (子类 extends 父类)
目的:减少代码的重复量(继承可大大减少我们代码中的重复)
继承特征:
默认父类Animal中的属性和行为都被子类继承下来,可以不用再次去声明
PHP是一个单继承,一个类只可以继承一个父类,但一个父类却可以被多个子类所继承。
子类不能继承父类的私有属性和私有方法。
PHP5中类的方法可以被继承,类的构造函数也可被继承
继承只能有且也只有一个父类
Parent:该关键字,意思为父母,在这里指代的是当前类的父类对象
(2)封装
①定义:封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节。
②优点:信息隐蔽,封装即隐藏
③封装的原则:在软件上,要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减少查错和拍错的难度。
④目的:
隐藏一个类的实现细节
防止对封装数据的未经授权的访问,使用者只能通过实现定制好的方法来访问数据,可以方便的加入控制逻辑,限制对属性的不合理操作。
有利于保证数据的完整性
有利于对数据的保护
(3)多态
①抽象:就是无法确切的说明,但又有一定的概念或者名称
抽象类:使用抽象关键字修饰的类,就叫做抽象类。
关键字:abstract
特点:
抽象类不能被实例化
抽象类不一定需要有抽象方法,但是包含抽象方法的类必须是抽象类
抽象方法:
abstract class Animal
{
public abstract function shout();
}
使用abstract修饰的函数方法称为抽象方法
抽象方法只有函数的声明部分,不包含实现部分,且要用分号代表结束
继承了带有抽象方法的类必须实现抽象方法的定义
②接口
接口是抽象方法和静态常量定义的集合
接口是一种特殊的抽象类,这种抽象类只包含抽象方法和静态常量,没有其他类型
注:在接口中的抽象方法只能是public,默认也是public。不能是protected和private
接口通常都是一组功能的集合
interface Ifly
{
public function fly();
}
在接口中的函数都是公共的抽象函数方法,这些函数不能添加abstract关键字,同时也可以省略public
实现接口: implements
实现了某个接口,那么必须实现接口中的所有的抽象方法
一个类可以实现多个接口