php类和对象->作用,php 类和对象

面向对象,是当今编程的主流,对于研发人员,可能对面向对象,多多少少的有一些认识,但是有些不常用的或许不是特别清楚。有时也是很有用的。下面就介绍几点知识。

一、final 关键字的一些知识:

1、final 关键字作为方法是可以被子类继承的。如下面:

class A{

final function operation(){

echo 'a';

}

}

class B extends A{

}

$a=new B();

$a->operation();

result :a

2、final 关键字作为类是不可以继承的,如下:

final class A{

final function operation(){

echo 'a';

}

}

class B extends A{

}

$a=new B();

$a->operation();

会有如下错误:

( ! ) Fatal error: Class B may not inherit from final class (A) in D:\wamp\www\examble\index19.php on line 9

3、final 关键字作为的方法不能被子类覆盖,也就是说子类不能有相同的方法,如下

class A{

final function operation(){

echo 'a';

}

}

class B extends A{

function operation(){

echo 'a';

}

}

$a=new B();

$a->operation();

会有如下错误:

( ! ) Fatal error: Cannot override final method A::operation() in D:\wamp\www\examble\index19.php on line 12

二、php  多重继承的实现,以下的例子在php 中将会有个致命的错误。

class A{

public function operation(){

echo 'a';

}

}

class C{

public function oper(){

echo 'c';

}

}

class B extends A{

public function operation(){

echo 'a';

}

}

class B extends C{

public function operati(){

echo 'd';

}

}

$a=new B();

$a->operation();

( ! ) Fatal error: Cannot redeclare class B in D:\wamp\www\examble\index19.php on line 24

这种形式的多种继承不被允许的。

如果非要实现多种继承,那么只能通过接口的方式实现呢。

interface Displayable{

public function display();

}

interface B{

public function show();

}

class A implements Displayable,B{

public function display(){

echo 'a';

}

public function show(){

echo 'b';

}

}

$ab=new A();

$ab->display();

$ab->show();

注意接口的方法都是public,接口的方法只有方法,没有方法体,子类重写接口的方法,接口的方法在子类必须都被重写。

三、 延迟静态绑定

php 5.3 引进了延迟静态绑定的概念是,该特性是允许在一个静态继承的上下文中对一个被调用类的引用。也就是说父类可以使用子类重载的静态方法。如下所示:

class A{

public static function who(){

echo __CLASS__;

}

public static function test(){

static::who();

}

}

class B extends A{

public static function who(){

echo __CLASS__;

}

}

A::test();输入B

php 手册有更多的介绍。

四,抽象类与接口的区别

抽象方法与接口有相同之处,都是只有方法名,没有方法体。

抽象方法的类必须是抽象类。

抽象方法与接口的方法,在子类都必须去实现。

抽象方法不支持多继承,接口可以实现多重继承。

抽象类不能继承抽象类。

接口能继承接口如下。

interface a{

public function e();

}

interface b extends a{

public function b();

}

class c implements b{

public function b(){

echo 'fddfdf';

}

public function e(){

echo 'fddf';

}

}

$c=new c();

$c->b();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值