面向对象三大特性: 封装,继承,多态
封装
就是把抽取出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有被授权的操作(方法)才 能对数据进行操作。
public
: 表示全局,本类内部,类外部,子类都可以访问
protected
: 表示受保护的,只有本类或子类可以访问
private
: 表示私有的,只有本类内部可以访问
继承
继承就是一个子类(Subclass)通过 extends
父类, 把父类(BaseClass)中的 public 和 protected 的属性和方法继续
下来,不能继承 private 属性和方法
多态
1.当一个父类知道所有的子类都有一个方法,但是父类不能确定该方法如何写,可以让子类去覆盖它的方法,方法 覆盖(重写),必须要求子类的方法名和参数个数完全一致
2.如果子类要去调用父类的某个方法(protected/public),可以使用 父类名::方法名 或者 parent::方法名
3.在实现方法重写的时候,访问修饰符可以不一样,但是子类方法的访问权限必须大于等于父类方法的访问 权限(即不能缩小父类方法的访问权限)如:
父类 public function cry(){} 子类 protected function cry(){} 则会报错
但是子类的访问权限可以放大,如:
父类 private function cry(){} 子类 protected function cry(){} 可以正确执行
访问权限大小排序: public > protected > private