php抽象类-抽象方法和重载overloading技术

2025-10-20 21:40:37

1、1.抽象类

就是一个不能实例化(不能new)的类。

定义形式:

abstract  class  类名{

//跟之前一样,定义类的成员就行

}

php抽象类-抽象方法和重载overloading技术

2、2.为什么需要这样一个“抽象类”——它不能实例化对象。

请看如下代码:

php抽象类-抽象方法和重载overloading技术

3、3.可见:

抽象类的目的不是为了得到一个自己的对象,而是为了“后代类”服务,给后代类提供一定的属性和方法。

再看一个具体一点的应用场景:

php抽象类-抽象方法和重载overloading技术

4、4.抽象方法:

抽象方法,就是一个“啥也不做”的方法:

定义形式:

abstract  function  方法名(形参1,形参2,... );

可见:

1,抽象方法,只定义方法头,没有大括号部分的方法体;

2,可以看到,该方法实际上没有任何可执行的代码,自然并不能做任何事情;

3,该方法是“专用于被覆盖(重写)”;——实际上,抽象方法,是要求下级必须重写。

php抽象类-抽象方法和重载overloading技术

1、1:__set($name, $value):

当对一个对象的未定义的属性,进行“赋值”时,此时会自动调用类中预先定义好的魔术方法:__set();

该方法带2个参数:

$name : 表示该正在赋值的未定义的属性名;

$value : 表示该正在赋值的值;

实际上,之所以对一个对象的未定义的属性进行赋值,自然是希望该对象来保存该数据。

举例:

php抽象类-抽象方法和重载overloading技术

2、2: __get($name)方法

当对一个对象的未定义的属性,进行“取值”时,此时会自动调用类中预先定义好的魔术方法:__get();

该方法带1个参数:

$name : 表示该正在取值的未定义的属性名;

代码示例:

php抽象类-抽象方法和重载overloading技术

3、3.测试结果:

php抽象类-抽象方法和重载overloading技术

4、4:__isset()判断:

当对一个对象的未定义的属性,进行“isset()”判断时,此时会自动调用类中预先定义好的魔术方法:__isset();

该方法带1个参数:

$name : 表示该正在isset()的未定义的属性名;

php抽象类-抽象方法和重载overloading技术

5、5.测试代码结果:

php抽象类-抽象方法和重载overloading技术

6、

6:__unset()销毁:

当对一个对象的未定义的属性,进行“unset()”操作时,此时会自动调用类中预先定义好的魔术方法:__unset();

该方法带1个参数:

$name : 表示该正在unset()的未定义的属性名;

php抽象类-抽象方法和重载overloading技术

1、1.__call():

当对一个“对象”使用一个未定义的方法的时候,会自动调用类中预先定义的__call()这个魔术方法。

该方法带2个参数:

$name:  代表正在使用的这个未定义的方法名;

$args:  代表正在使用的这个未定义的方法所使用的实参数据,是一个数组。

比如:

class  A{

}

$a1 = new A();

$a1->f1(); //f1方法其实未定义,此时就会调用类中的__call()方法;

//如果类中没有__call()方法,此时就会报错。

php抽象类-抽象方法和重载overloading技术

2、2.于是,我们来定义该方法:__call()

php抽象类-抽象方法和重载overloading技术

3、3.应用:

利用PHP的方法重载机制,可以实现通常面向对象语言中的“重载现象”!

php抽象类-抽象方法和重载overloading技术

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢