zoukankan      html  css  js  c++  java
  • 面向对象三大特性: 封装,继承,多态

    面向对象的三大特性:封装,继承,多态。

    一、封装:目的:如何做类,让类更安全。

    让一些成员变量不能被外界直接被访问。

    方法:

    1.将成员变量变为private。
    2.在类里面做一个成员方法来间接访问。
    3.在该方法里面加限制条件
    4. 标准情况下每一个成员变量都要做封装。

    class Ren{
        public $name;
        public $sex;
        public $birthday;
        private $age;   //将成员变量变为private
        public function setage($age){  //在类中做一个成员方法来间接访问
            if($age>=18 && $age<=50){  //在该方法里面加限制条件
            $this->age = $age;}
            }
        public function getage(){
            return $this->age;
            }
        }
        
        $r = new Ren();
        $r->name = "张三";
        $r->setage(20);
        var_dump($r);

    为了简化用 

    魔术方法:

    public function __set($name,$valus){
      if($name=="age"){
        if($value>=18 && $value<=50){
          $this->$name = $value;
    }else{
       $this->$name = $vaule;  

    }
    }
       
    }

    public function __get($name){
      return $this->$name;
    }

    $r->age =20 //自动调用魔术方法__set
    echo $r->age;//自动调用魔术方法__get

    二、继承
    概念:子类可以继承父类的一切。父类起到指导性的作用。
    特点:单继承(一个子类只能有一个父类,一个父类可以有多个子类)

    关键字: extends 

    class Ren{
        public $name;
        public $sex;
        public function say(){
            echo "人在讲话";
            }
        }
    class China extends Ren{  //有父类的所有内容
      public $yuyan; //扩展自己的内容
      
      public function say(){
    //函数重写:子类可对父类的函数重写。
        parent::say();  //调用父类里面的方法
        echo "你好";
    }
      public function test(){ //函数重载:同名方法,参数个数不同或类型不同,实现不同功能
        echo "测试";
    }

      public function test($a){
        echo "aaaa";
    }

      
      public function test($a,$b){
        echo "bbbbb";
    }
     

    }
    $c = new China(); $c->say();

    重写:子类可对父类的函数重写。override

    重载:一个方法多个功能,因为参数个数不同。方法名相同,参数个数不同。也叫编译多态。overload

    多态:当父类引用指向子类实例时,由于子类对父类方法进行了重写,在调用该方法的时候表现的不同,称为多态。也叫运行多态。

  • 相关阅读:
    工厂模式
    装饰器模式
    策略模式
    代理模式
    建造者模式
    单例模式
    观察者模式
    JVM运行时数据区
    Export to excel
    C#网络编程(同步传输字符串) Part.2 [转自JimmyZhang博客]
  • 原文地址:https://www.cnblogs.com/niushuangmeng/p/8257615.html
Copyright © 2011-2022 走看看