php类的总结,PHP类相关知识点实例总结

本文实例总结了PHP类相关知识点。分享给大家供大家参考,具体如下:

最终类与最终方法

如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。final class a{}

class a{

final public function A(){}

}

抽象类与抽象方法abstract class a {

public abstract function func();

}

class A extends a{

public function func(){}

}

① 一个类可以使用abstract声明为抽象类;抽象类是不能实例化的类,只用作其他类的父类。abstract class name{}

② 一个方法可以使用abstract声明为抽象方法;抽象方法只需要声明方法头,不需要大括号部分的方法体。abstract public function name($val);

③ 一个类中有抽象方法,则该类必须声明为抽象类。

④ 子类继承自一个抽象类,则子类不行实现父类中的所有抽象方法,除非子类也继续作为抽象类。

⑤ 子类实现抽象父类的方法时,访问控制符范围不能降低,且方法的参数也必须一致(重写)。

接口

接口可以看作是抽象类的更高层面的抽象,可以说是抽象类的特例interface a{

function func();

}

class A implements a {

function func(){}

}

类:属性、类常量、方法

抽象类:属性、类常量、抽象方法

接口:接口常量、抽象方法

① 相比抽象类,接口可实现‘多继承'class A implements a,b,c{}

② 一个接口只能继承一个接口interface a extends b{}

③ 其中方法都是抽象方法不用abstract修饰,即下级类要么实现接口的方法(implements),要么也声明为抽象方法

重载技术

1. 属性重载:如果使用一个不存在的属性,就会调用类中预先定义好的某个方法以处理数据;

对于属性不用的应用场景,做如下处理

① 取值:自动调用类中的__get()

② 赋值:自动调用类中的__set()

③ 判断是否存在:自动调用类中的__isset()

④ 销毁:自动调用类中的__unset()

前提是预先定义好这些方法,否则会报错<?php

class bee{

public $ol = array();

public function __get($key){

if(isset($this->ol[$key])){

return $this->ol[$key];

}

return $key.' not exists';

}

public function __set($key,$val){

$this->ol[$key] = $val;

}

public function __isset($key){

if(isset($this->ol[$key])){

return true;

}

return false;

}

public function __unset($key){

unset($this->ol[$key]);

}

}

$obj = new bee();

echo $obj->one;

echo '
';

$obj->one = 1;

echo $obj->one;

echo '
';

var_dump(isset($obj->one));

运行结果如下:one not exists

1

boolean true

2. 方法重载:如果使用一个不存在的方法,就会调用类中预先定义好的某个方法以处理该行为;

对于方法不用的应用场景,做如下处理

① 在对象中调用不可访问的方法:__call()

② 静态方式中调用不可访问方法:__callStatic()<?php

class bee{

public function __call($name,$arr){

echo '
';

echo 'function '.$name.' not exist';

}

static function __callStatic($name,$arr){

echo '
';

echo 'function '.$name.' not exist';

}

/*public function __call($name,$arr){

$num = count($arr);

if($num<1){

$name();

}else{

$name = $name.'_one';

$name($arr[0]);

}

}*/

}

$obj->func();

bee::staFunc();

/*$obj->func(1);

function func(){

echo '
';

echo 'no.0';

}

function func_one($val){

echo '
';

echo 'no.'.$val;

}*/

运行结果如下:function func not exist

function staFunc not exist

注意:以上方法都属于魔术方法,都带有参数

希望本文所述对大家PHP程序设计有所帮助。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值