PHP类继承 extends使用介绍
出来工作这么久了,项目经验倒是不少,但是当问及底层的东西时候,常常是一言不发了。现在项目设计底层的东西越来越少,可以说是真正用到的也就是那么一点,真正核心的东西都已经被框架封装好了。总感觉自己一直进步很慢,关于底层设计思想,常常也只可意会。随着时间的流逝,我们常常会感慨书到用时方恨少了,接下来一定要恶补设计思想了。今天先来复习一下类继承。 类继承很重要,作为程序员也基本每天都会和他打交道,但是有些东西你真的都知道吗?下面是从官网上面看到的。一个类可以在声明中用 extends,关键字继承另一个类的方法和属性。PHP不支持多重继承,一个类只能继承一个基类。被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final,则该方法不可被覆盖。可以通过 parent:: 来访问被覆盖的方法或属性。当覆盖方法时,参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外,构造函数可在被覆盖时使用不同的参数。关于基本的概念想必大家都会知道,但是对于final和parent::在项目中我还真没有怎么使用过,惭愧啊。 Final 关键字PHP 5新增的一个关键字,如果父类中的方法被声明为 final,则子类无法覆盖该方法。同样如果一个类被声明为 final,则不能被继承。 范围解析操作符(::)范围解析操作符或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。 当一个子类覆盖其父类中的方法时,PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数,重载以及魔术方法。 下面是调用父类的方法的一个示例: 代码如下: class MyClass
{ protected function myFunc() { echo "MyClass::myFunc()n"; } } class OtherClass extends MyClass $class = new OtherClass(); 当在类定义之外引用到这些项目时,要使用类名。::class 自 PHP 5.5 起,关键词 class 也可用于类名的解析。使用 ClassName::class 你可以获取一个字符串,包含了类 ClassName 的完全限定名称。这对使用了 命名空间 的类尤其有用。这些可能就是以后要讨论的话题了,关于这个概念那就是以后要讨论的了,现在我们还在使用php5.3。不过说句实话,有一些关键字在小项目中确实是很难使用,不过我想多了解一些总还是需要的。尤其是当你使用一些第三方的类库时候,当你细细研究他的程序逻辑,你总能学点东西。尽管有些东西你长时间不用,可能就忘记了,但是毕竟他曾经在你脑海里经过过,总会为以后的人生留点痕迹。最后废话不多说了,分享一段范围解析操作符(::)应用的代码,你们也来感受下: 代码如下: class cA class cB extends cA class cC extends cA class cD extends cA cB::setOther('cB'); // cB::method()! /** ?> 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(); ?> 以上介绍的内容就是PHP extends类继承的全部实现步骤。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |