zoukankan      html  css  js  c++  java
  • php 面向对象的三大特性

    三大特性是:封装,继承,多态  

    所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。


    所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

    所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

    <?php
    header("Content-type:text/html;charset=utf-8");
    /*封装
    目的:为了使类更加安全
    做法:
    1.将成员变量变成私有
    2.做一个成员方法来间接访问
    3.在该方法里面加限制条件

    450147805

    class Ren
    {
        private $age;    //public (公有) private (私有)  18s岁-50岁之间
        

        function setAge($n)
        {   if($n>=18 && $n<=50)
         {
           $this->Age = $n;    
        }
         }
           function getAge()
           {
            return $this->age;   
           }
    }


    class Ren
    {
        private $age;
        private $name;
        function __set($n,$v){
            if($v>=18 && $v<50){
                
            $this->$n = $v;
            }
            else{
                
            $this->$n = $v;    
                
            }
        }
        }
        


    $r = new Ren();
    $r->setName("张三");
    var_dump($r);
    echo $r->getname();

    $r = new Ren;
    $r->__set("age",20);
    $r->name = ("张三");
    var_dump($r);*/

    //继承
    //子类可以继承父类的一切
    //
    //
    class Ren{
        private $name;
        function Run()
        {
            echo "跑步";
        }
    }    

    class Nan extends Ren   ( extends  =继承)
    {
        function Run()
        {
            parent ::Run();//
            echo "洗澡";
        }
    }

    $c = new Nan();
    $c->Run();    


    ?>

  • 相关阅读:
    ZOJ 3332 Strange Country II
    ZOJ 3331 Process the Tasks(双塔DP)
    ZOJ 3326 An Awful Problem(模拟)
    HDU 1796 How many integers can you find(容斥原理)
    HDU 4059 The Boss on Mars(容斥原理)
    HDU 4135 Co-prime(容斥原理)
    HDU 5677 ztr loves substring(回文串加多重背包)
    CodeForces 668B Little Artem and Dance
    CodeForces 667A Pouring Rain
    Java实现 LeetCode 764 最大加号标志(暴力递推)
  • 原文地址:https://www.cnblogs.com/Liangbingbing/p/6735260.html
Copyright © 2011-2022 走看看