zoukankan      html  css  js  c++  java
  • 面向对象基础和面向对象的三大特性之一:封装(20161024)

    面向对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <?php
    
    //定义数组
    /*$attr = array();
    echo $attr;*/
    //$attr[0] = 1;
    //索引数组
    //$attr = array(1,2,3,4);
    //关联数组
    //$attr = array("code"=>"p001","name"=>"张三");
    
    //二维数组
    /*$attr = array(
        array(),
        array()
    );*/
    
    //数组遍历
    
    //for循环遍历
    /*for($i=0;$i<count($attr);$i++)
    {
        $attr[$i];
    }*/
    
    //foreach遍历
    /*foreach($attr as $v)
    {
        $v;
    }
    foreach($attr as $k=>$v)
    {
        $k;$v;
    }*/
    
    //$attr = array(1,2,3,4,5,2);
    /*    放在别的语言里面foreach遍历数组和集合的情况下不能删除和添加内容
    foreach($attr as $k=>$v)
    {
        if($v==3)
        {
            unset($attr[$k]);//删除元素
        }
    }
    $attr = array_values($attr); //重新索引
    var_dump($attr);*/
    
    //each()和list()方法遍历
    //var_dump(each($attr));
    //list($a,$b)=$attr;  取前两个
    //echo $b;
    
    //指针遍历
    //echo current($attr); 
    //echo key($attr);
    //next($attr);
    //prev($attr);
    //end($attr);
    //reset($attr);
    
    //var_dump(in_array(9,$attr));//判断某一个值是否在数组里面存在
    //var_dump(array_reverse($attr));//翻转数组
    //var_dump(array_unique($attr)); //去重
    //var_dump(array_count($attr));//取数组长度
    //unset($arr[0])//删除数组的某个值
    //array_values($arr)//重新索引
    //$attr1 = array(9,10);
    //var_dump(array_merge($attr,$attr1));//合并数组
    //array_push($attr,10); //添加元素到数组,返回值不是新的数组
    //var_dump($attr);
    //$attr[]=11; //添加元素到数组
    //var_dump($attr);
    
    
    //面向对象
    //面向过程
    //$a = 10;
    //$b = 15;
    //echo $a+$b;
    
    //面向对象
    //1.什么叫做对象
    //一切皆为对象
    //2.什么叫做类
    //由众多对象的抽象
    
    //做类
        
    /*class Ren
        //  class 类名(首字母大写)  class是用来定义类的
    {
        //通过变量和方法来描述人类的特征
        
        //成员变量和成员方法总和起来叫做类的成员
        
        //成员变量    类里面的普通成员是属于对象的
        public $name;
        public $sex;
        
        //构造方法
        function __construct($n)    //统一的构造方法名
        {
            //$sex = $n; //错误    public $sex;里的$sex是类的、抽象的,这里的$sex是对象的、具体的
            //$this关键字,在类里面代表该对象,谁用就代表谁
            $this->sex =$n; //正确
        }
        
        //成员方法
        public function Speak()
        {
            echo "正在讲话";
        }
    }
    
    $r = new Ren("男"); //实例化对象    对对象初始化
    
    //object    类,对象
    
    var_dump($r);
    
    $r1 = new Ren("女");
    var_dump($r1);*/
    
    //构造方法,始终存在,如果不写也是存在的
    
    //var_dump($r);
    //$r->name = "李四"; //赋值    其他语言都是点
    //echo $r->name; //取值
    //var_dump($r);
    //$r->Speak();
    //$r1 = new Ren(); //实例化对象
    //$r1->name = "数据";
    
    //var_dump($r==$r1);
    
    //每一个对象都是一个独立的个体,都不一样
    
    //访问修饰符
    //public:代表公有的,在任何地方都可以访问
    //protected:代表受保护的,只能在该类或该类的子类中访问
    //private:代表私有的,只能在该类中访问
    
    
    ?>
    
    
    </body>
    </html>
    1024morningtest.php

    封装

    研究一个类,要先看它的构造方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    
    <body>
    <?php
    
    class Ren
    {
        private $name;
        private $sex;
        private $age; //年龄必须在18-50之间
        
        function __construct($v)//构造方法
        {
            $this->sex = $v;
        }
        //魔术方法 以双下划线打头
        //魔术方法set
        function __set($n,$v)//成员变量的名称,成员变量的值
        {
            if($n=="age")
            {
                if($v>=18 && $v<=50)
                {
                    $this->$n = $v;
                }
            }
            else 
            {
                $this->$n = $v;
            }
        }
        
        //魔术方法get
        function __get($n)
        {
            return $this->$n;
        }
        
        /*//设置age的值
        function setage($a)
        {
            if($a>=18 && $a<=50)
            {
                $this->age = $a;
            }
        }
        //获取age的值
        function getage()
        {
            return $this->age;
        }*/
        
        function say()
        {    
            echo "hello"; 
        }
        
        //析构方法    在对象释放的时候执行,自动调用;如果连接数据库的话,可以在里面写断开连接
        function __destruct()
        {
            echo "这是一个析构方法";
        }
        
        function __tostring()
        {
            return "这个类是人类";
            
            //可以用来输出对象,比如介绍功能
        }
        
        
    }
    
    $r = new Ren("男");
    
    //$r->setage(20);
    //echo $r->getage();
    
    $r->say();
    //$r->age = 30;        等价于    $r->__set("age",20);
    
    //echo $r->age;
    
    //$r->__get("age");
    
    //$r->__set("age",20);
    
    var_dump($r);
    
    //构造方法:写法特殊,执行时间特殊
    
    //OOP(面向对象)三大特性:封装,继承,多态
    
    //封装的目的:为了让类更安全
    //封装的做法:
    //1.类里面的成员变量做为private
    //2.使用成员方法来间接访问成员变量
    //3.在该方法里面加限制条件
    
    //php类里面不允许出现同名方法,但是
    
    //函数重载
    //在类里面写多个同名方法来实现不同功能
    /*public string Show()
    {
        return "显示";
    }
    public string Show(string a)
    {
        return a+"显示";
    }
    public string Show(string a,string b)
    {
        return a+b+"显示";
    }
    public string Show(int b)
    {
        return b+"数字";
    }*/
    
    //1.函数名必须相同
    //2.参数个数不同或参数类型不同
    
    //例子:求两个圆之间的阴影面积
    /*$maxr = 20;
    $minr = 10;
    $mj = 3.14*$maxr*$maxr - 3.14*$minr*$minr;
    
    
    class Yuan
    {
        //代表半径
        public $r;
        
        function __construct($n)
        {
            $this->r = $n;
        }
        
        //求面积的方法
        function MJ()
        {
            return 3.14*$this->r*$this->r;
        }
    }
    
    $r1 = new Yuan(20);
    $r2 = new Yuan(10);
    
    $mianji = $r1->MJ()-$r2->MJ();*/
    
    //例子:计算器
    
    $a = 10;
    $b = 5;
    
    $jia = $a+$b;
    $jian = $a-$b;
    $cheng = $a*$b;
    $chu = $a/$b;
    
    
    class jisuan
    {
        public $a;
        public $b;
        
        function __construct($n,$m)
        {
            $this->a = $n;
            $this->b = $m;
        }
        
        function jia()
        {
            return $this->a+$this->b;
        }
        function jian()
        {
            return $this->a-$this->b;
        }
        function cheng()
        {
            return $this->a*$this->b;
        }
        function chu()
        {
            return $this->a/$this->b;
        }
        function quyu()
        {
            return $this->a%$this->b;
        }
    }
    
    $j = new jisuan(10,5);
    $j->quyu();
    
    
    
    
    
    
    
    
    
    
    
    
    ?>
    
    
    
    </body>
    </html>
    1024afternoontest.php
  • 相关阅读:
    免费申请域名
    分享学习linux网站
    二分法
    node 解决存储xss风险报告
    cf987f AND Graph
    loj2587 「APIO2018」铁人两项
    luogu3830 [SHOI2012]随机树
    luogu3343 [ZJOI2015]地震后的幻想乡
    bzoj2560 串珠子
    luogu3317 [SDOI2014]重建
  • 原文地址:https://www.cnblogs.com/zsczsc/p/6119339.html
Copyright © 2011-2022 走看看