面向对象的三大特征

封装性

  • 定义:把抽取出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法),才能对数据进行操作;
  • 例子:需求:不能随便查看人的年龄和工资。
     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语言可以实现重载。

多态性

  • 子类重写父类中的方法,体现多态性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值