zoukankan      html  css  js  c++  java
  • 10.24 (下午) 开课一个月零二十天 (封装)

    <?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;
    
    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();
    
    
    ?>
    
  • 相关阅读:
    CMD指令
    六种Socket I/O模型幽默讲解
    性格与职业的选择
    为什么主引导记录的内存地址是0x7C00?
    pandas数据分析第二天
    pandas数据结构和介绍第一天
    tornado options
    tornado.web.StaticFileHandler
    mysql多条更新
    pandas
  • 原文地址:https://www.cnblogs.com/l5580/p/5996794.html
Copyright © 2011-2022 走看看