PHP面向对象之重写与重载

  • 1,777
  • 阅读模式

重写/覆盖:override

  指:子类重写了父类的同名方法

重载: overload

  重载是指:存在多个同名方法,但参数类型/个数不同.

传(几个)不同的参数,调用不同的方法

但是在PHP中,不允许存在多个同名方法.

因此,不能够完成java,c++中的这种重载

但是,PHP的灵活,能达到类似的效果

public class OverTest
{
	public static void main(String[] args)
	{
		Calc calc = new Calc();

		System.out.println(calc.area(10));

		System.out.println(calc.area(5,8));
	}
}



class Calc
{
	public double area(float r)
	{
		return 3.14 * r * r;
	}
	
	public int area(int width,int height)
	{
		return width*height;
	}

}
<?php
class Human {
    public function say($name) {
        echo $name,' 吃了吗?<br />';
    }
}
class Stu extends Human {
    public function say() {
        echo '切克闹,卡猫百比<br />';
    }

    /*
    public function say($a,$b,$c) {
        echo '哥仨好';
    }
    */
    //以上两个同名方法(不能定义),在java中可以叫做重载
}
$ming = new Stu();
$ming->say();
$ming->say('张三');  // 上面这个过程叫重写override!

class Calc {
    public function area() {
        // 判断一个调用area时,得到的参数个数
        $args = func_get_args();
        if(count($args) == 1) {
            return 3.14 * $args[0] * $args[0];
        } else if(count($args) == 2) {
            return $args[0] * $args[1];
        } else {
            return '未知图形';
        }
    }
}
//count()返回数组中元素的数目

$calc = new Calc();

// 计算圆的页面
echo $calc->area(10),'<br />';
// 计算矩形的面积
echo $calc->area(5,8);

 

weinxin
我的微信
这是我的微信扫一扫
开拓者博主
  • 本文由 发表于 2016年8月1日20:30:26
  • 转载请务必保留本文链接:https://www.150643.com/305.html
匿名

发表评论

匿名网友 填写信息