php的extends继承,extends类继承如何在PHP中使用

extends类继承如何在PHP中使用

发布时间:2020-12-25 16:39:14

来源:亿速云

阅读:118

作者:Leah

本篇文章给大家分享的是有关 extends类继承如何在PHP中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

Final 关键字

PHP 5新增的一个关键字,如果父类中的方法被声明为 final,则子类无法覆盖该方法。同样如果一个类被声明为 final,则不能被继承。

需要注意的是: 属性不能被定义为 final,只有类和方法才能被定义为 final。

范围解析操作符(::)

范围解析操作符或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。

self,parent 和 static 这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。

当一个子类覆盖其父类中的方法时,PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数,重载以及魔术方法。

下面是调用父类的方法的一个示例:

复制代码 代码如下:

class MyClass

{

protected function myFunc() {

echo "MyClass::myFunc()\n";

}

}

class OtherClass extends MyClass

{

// 覆盖了父类的定义

public function myFunc()

{

// 但还是可以调用父类中被覆盖的方法

parent::myFunc();

echo "OtherClass::myFunc()\n";

}

}

$class = new OtherClass();

$class->myFunc();

/**

* 输出结果 ->

* MyClass::myFunc()

* OtherClass::myFunc()

*/

?>

当在类定义之外引用到这些项目时,要使用类名。

::class 自 PHP 5.5 起,关键词 class 也可用于类名的解析。使用 ClassName::class 你可以获取一个字符串,包含了类 ClassName 的完全限定名称。这对使用了 命名空间 的类尤其有用。这些可能就是以后要讨论的话题了,关于这个概念那就是以后要讨论的了,现在我们还在使用php5.3。

不过说句实话,有一些关键字在小项目中确实是很难使用,不过我想多了解一些总还是需要的。尤其是当你使用一些第三方的类库时候,当你细细研究他的程序逻辑,你总能学点东西。尽管有些东西你长时间不用,可能就忘记了,但是毕竟他曾经在你脑海里经过过,总会为以后的人生留点痕迹。

最后废话不多说了,分享一段范围解析操作符(::)应用的代码,你们也来感受下:

复制代码 代码如下:

class cA

{

/**

* 直接使用的测试属性的默认值

*/

protected static $item = 'Foo';

/**

* 间接使用的测试属性的默认值

*/

protected static $other = 'cA';

public static function method()

{

print self::$item."\r\n";

print self::$other."\r\n";

}

public static function setOther($val)

{

self::$other = $val;

}

}

class cB extends cA

{

/**

* 重定义测试属性的默认值

*/

protected static $item = 'Bar';

public static function setOther($val)

{

self::$other = $val;

}

/**

* 不重新声明 method()方法

*/

}

class cC extends cA

{

/**

* 重定义测试属性的默认值

*/

protected static $item = 'Tango';

public static function method()

{

print self::$item."\r\n";

print self::$other."\r\n";

}

/**

* 不重新声明 setOther()方法

*/

}

class cD extends cA

{

/**

* 重定义测试属性的默认值

*/

protected static $item = 'Foxtrot';

/**

* 不重新声明 任何方法来实现上述过程

*/

}

cB::setOther('cB'); //  cB::method()!

cB::method(); // cA::method()!

cC::setOther('cC'); // cA::method()!

cC::method(); // cC::method()!

cD::setOther('cD'); // cA::method()!

cD::method(); // cA::method()!

/**

* 输出结果 ->

* Foo

* cB

* Tango

* cC

* Foo

* cD

*/

?>

PHP extends类继承代码示例:

复制代码 代码如下:

< ?php

class a{

public $x;

public $y;

function __construct($x=0,$y=0){

$this->x=$x;

$this->y=$y;

}

function getx(){

return $this->x;

}

function gety(){

return $this->y;

}

function __destruct(){}

}

class a2 extends a{}

/*extends是一个继承函数*/

$b2=new a2(10,10);

echo $b2->getx()."
";

echo $b2->gety();

?>

以上就是 extends类继承如何在PHP中使用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值