封装性
- 定义:把抽取出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法),才能对数据进行操作;
- 例子:需求:不能随便查看人的年龄和工资。
class Person {
public $name;
private $age;
private $salary;
function _construct($name,$age,$dalary) {
$this->name=$name;
$this->age=$$age;
$this->salary=$salary;
}
//成员方法
function showInfo() {
//这里说明在本类中可以使用 public protected
echo $this->name."||".$this->age."||".$this->salary;
}
//我们可以通过添加约束条件的方法来访问 protected 或者 private 变量
//获取个人薪水
public function getSalary($user,$passwd) {
if($user == "shunping" && $passwd == "123") {
return $this->salary;
}else{
return "Sorry,你无法查看";
}
}
//创建一个人
$p1=new Person("孙悟空",30,2000);
//访问 孙悟空 的薪水
echo $p1->name; //函数返回 孙悟空
echo $p1->getsalary("shunping","123"); //报错:Cannot access private property $salary...
//可通过
}
- php提供了三种访问控制修饰符:public(全局类 继承类 本类)、protected(继承 本类)、private(本类);
- 使用一对get和set方法(public)可以打破既定规律。
- 封装的作用:可以为某些属性增加限制条件。
注:
(1)方法的默认访问修饰符为public,属性则必须指定访问修饰符;
(2)方法之间可以互相调用,但要用 this 先做引用。
继承性
- 定义:所谓继承,就是一个子类通过“extends 父类”把父类的(public/protect)属性和(public/protect)方法 继承和继承下来。
- 基本语法:class 子类名 extends 父类名 {//再写自己需要的属性和方法}
- 子类可以继承父类的protected、public方法和属性。如下图:
注:
(1)子类最多只能继承一个父类(指直接继承),要实现多继承,可以用如下的方法(多层继承):
<?php
class A{
}
class B extends A{
}
class C extends B{
}
?>
(2)在创建某个字类对象时,默认情况下不会自动调用其父类的方法,这点与java是不一样的。
(3)如果在子类中需要访问父类的方法(构造方法/成员方法/ 方法的访问修饰符是public/protected),可以使用“父类::方法名”或者“parent::方法名”来完成。
(4)如果子类(派生类)中的方法和父类(基本)方法相同,我们称为方法重写/方法覆盖。
(5)PHP5的魔术函数__cal使得原本不支持重载的PHP语言可以实现重载。
多态性
- 子类重写父类中的方法,体现多态性。