php之属性重载和方法重载

<?php
/**
 *
 * @authors Your Name ([email protected])
 * @date    2016-06-13 20:40:19
 * @version $Id$
 */
//属性重载

class Student{
    private $name;
    public $age;
    public $xuehao;

    public function __construct($name,$age,$xuehao)
    {
    	$this->name=$name;
    	$this->age=$age;
    	$this->xuehao=$xuehao;
    }
    	//当访问一个不存在的属性是自动
    //读取不可访问属性的值或者不存在时
    public function __Get($name)
    {
     return "属性不存在";		

    }

    //在给不可访问属性赋值或者不存在时

    public function __Set($name ,  $value )
    {
    	@$this->data[$name]=$value;
    	echo  "Setting {$name} to {$value}\n" ;
    }

    //判断属性是否存在
    public function __isset ($name)
    {
    	var_dump($name);
    }
    //方法重载
    public function __call($name,$value)
    {
    	echo "方法不存在或不能被调用";
    }

    //当对象转换为字符串时自动调用
    public function __Tostring()
    {
       return $this->name;
    }	

}

$p=new Student("a","10","20100");
echo $p;

  

PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magic methods)来实现的。

当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。本节后面将使用"不可访问属性(inaccessible properties)"和"不可访问方法(inaccessible methods)"来称呼这些未定义或不可见的类属性或方法。

所有的重载方法都必须被声明为 public

时间: 2024-08-07 00:16:06

php之属性重载和方法重载的相关文章

疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写

一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同时这这里我们需要注意以下两点:  A.方法重载与返回值类型没有任何关系;  B.方法重载与是否有static修饰没有任何关系. 那我们如何才能确定到底调用的哪个方法呢?  A.主调者:明确是谁在调用这个方法,是类还是对象  B.方法名和形参:确定调用哪个方法(由方法名和形参共同决定) 例1: 1 p

方法重写与方法重载

继承和多态都是面向对象程序设计的特点.使用继承可以在一个父类的基础上再创建一个子类,这个子类不但拥有父类已有的属性和方法,还可以创建属于自己的属性和方法.由于子类和父类之间的关系,从而引出了方法重写和方法重载的问题.方法重写及方法重载在继承和多态性方面的应用中会存在很多问题,这些概念很容易混淆,掌握重写和重载的区别对学会使用多态的方式编写程序.提高程序的可维护性奠定了基础. 一.方法重写(0veriding)如何定义重写:在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类

php 魔术方法 重载

重载 属性重载与方法重载 PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法.我们是通过魔术方法(magic methods)来实现的. 当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用. 所有的重载方法都必须被声明为 public. 属性重载 public void __set ( string $name , mixed $value ) public mixed __get ( string $name ) publ

封装 ,this,构造方法,方法重载

.什么是封装?封装就是将属性私有化,提供公有的方法访问私有属性. 做法就是:修改属性的可见性来限制对属性的访问,并为每个属性创建一对取值(getter)方法和赋值(setter)方法,用于对这些属性的访问. 如:private String name; public String getName(){ ??????????????????? return; ?????????? } ? ????? public void setName(String name){ ???????????????

方法重写与方法重载的区别

一.方法重写(0veriding) 在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量. 子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展,增大功能,程序设计者常常把这样的一种操作方法称为重写,也叫称为覆写或覆盖. 重写体现了Java优越性,重写是建立在继承关系上,它使语言结构更加丰富.在Java中的继承中,子类既可以隐藏和访问父类的方法,也可以覆盖继承父类的方法. 在Java中覆盖继承父类的方法就是通过方法的重写来实现的.

Java方法重写与方法重载

继承和多态都是面向对象程序设计的特点.使用继承可以在一个父类的基础上再创建一个子类,这个子类不但拥有父类已有的属性和方法,还可以创建属于自己的属性和方法.由于子类和父类之间的关系,从而引出了方法重写和方法重载的问题.方法重写及方法重载在继承和多态性方面的应用中会存在很多问题,这些概念很容易混淆,掌握重写和重载的区别对学会使用多态的方式编写程序.提高程序的可维护性奠定了基础.一.方法重写(0veriding)如何定义重写:在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所

Java知多少(22)方法重载

在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading). 参数列表又叫参数签名,包括参数的类型.参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同. 重载是面向对象的一个基本特性. 下面看一个详细的实例. 1 public class Demo{ 2 // 一个普通的方法,不带参数 3 void test(){ 4 System.out.println("No parameters"); 5 }

好程序员训练营-Java方法重载

<A href="http://www.goodprogrammer.org/" target="blank">android培训</a>------我的java笔记,期待与您交流! 在Java中,同一个类中的多个方法可以有相同的名字,只要它们的参数列表不同就可以,这被称为方法重载(method overloading). 参数列表又叫参数签名,包括参数的类型.参数的个数和参数的顺序,只要有一个不同就叫做参数列表不同. 重载是面向对象的一个基

3.5 方法重载概述和基本使用

/* 需求:求数的和 需求不断的发生改变,就对应的提供了多个求和的方法. 但是名字是不一样的. 又要求方法命名做到:见名知意. 但是,很明显,现在没有做到. 针对这种情况:方法的功能相同,参数列表不同的情况,为了见名知意,Java允许它们起一样的名字. 其实,这种情况有一个专业名词:方法重载. 方法重载: 在同一个类中,方法名相同,参数列表不同.与返回值类型无关. 参数列表不同: A:参数个数不同 B:参数类型不同 */ class FunctionDemo4 { public static v