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();
總結
以上是生活随笔為你收集整理的php类和对象-作用,php 类和对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js json制表符报错_llhttp是
- 下一篇: php下拉上滑分页,Flutter实现下