码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象三大特性

时间:2018-01-09 11:44:05      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:步骤   成员   面向   实现   魔术   对比   xtend   限制   overload   

  面向对象三大特性:

    1.封装;  2.继承; 3.多态

 

  封装:

    目的:为了让类更加安全。

    步骤:

      1.将成员变量变为private,不能从外界访问;

      2.在类里面做一个成员方法来间接访问;

      3.在该方法里面加限制条件。

  方法一:

class Ren{
    public $name;
    public $sex;
    public $birthday;
    private $age;
    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;

  方法二:魔术方法

class Ren{
    public $name;
    public $sex;
    public $birthday;
    private $age;
        public function __set($name,$value){
        if($name=="age"){
            if($value>=18 && $value<=50){
                $this->$name = $value;
            }
        }else{
            $this->$name = $value;
        }
    }    
    public function __get($name){
        return $this->$name;
    }
}
$r = new Ren();
$r->name = "张三";
$r->age = 20;   //自动调用魔术方法__set
echo $r->age;   //自动调用魔术方法__get
var_dump($r);

    其中__set($name,$value)中第一个值为变量名,第二个为变量值。

 

  继承:

    概念:子类可以继承父类的一切,且可扩展自己的内容(父类不需要太具体)。

    特点:单继承,即一个子类只能有一个父类,同一个父类可以有多个子类。

  制作一个父类:

class Ren{
    public $name;
    public $sex;
    public function say(){
        echo "人在讲话";
    }
}

  制作子类:

class China extends Ren{
    public $yuyan;
    public function say(){
        //调用父类里面的方法
        parent::say();
        echo "你好";
    }
}
$c = new China();
$c->say();

    子类:

      1.可扩展自己的内容;

      2.可以对父类的方法进行重写,即函数重写(override)

      重写(override)对比重载(overload):

        (1)重写即子类对父类的方法进行重写;

        (2)重载发生于强类型语言中,让一个方法实现多个功能;

          重载条件:①同名方法;  ②参数不同;  ③参数相同,类型不同。

 

  多态:

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

    条件:

      1.必须有集成存在;

      2.有重写存在;

      3.方法不同。

    多态分为运行多态和编译多态:

      运行多态需要用到强类型语言;

      编译多态指的就是重载,重载在编译过程中会出现的不同。

    多态常发生在强类型语言中:同一类型,指向不同输出也不同,父类的引用完全可以指向子类的实例。

面向对象三大特性

标签:步骤   成员   面向   实现   魔术   对比   xtend   限制   overload   

原文地址:https://www.cnblogs.com/maoqiaoyu123/p/8250603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!