> php教程 > php手册 > 본문

php 类和对象

WBOY
풀어 주다: 2016-06-13 09:17:10
원래의
1310명이 탐색했습니다.

php 类和对象

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


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


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

class A{
    final function operation(){
        echo 'a';
    }
}

class B extends A{
}


$a=new B();
$a->operation();
로그인 후 복사

result :a


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


로그인 후 복사


会有如下错误:

( ! ) 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.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!