婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP抽象類和接口用法實例詳解

PHP抽象類和接口用法實例詳解

熱門標簽:怎么向銷售公司推銷外呼系統 廣東地市地圖標注 外呼系統撥打暫時無法接通 哪里辦理400電話 長春人工外呼系統服務商 高德地圖標注家 江西手機自動外呼防封系統是什么 仁和怎么申請400開頭的電話 廣州防封卡外呼系統多少錢一個月

本文實例講述了PHP抽象類和接口用法。分享給大家供大家參考,具體如下:

前言

對于oop,估計大多數人并不陌生。有些人除PHP外也學習不少其他語言,會發現php的不同之處,可能語法極其丑陋,但并不妨礙它成為世界上最好的語言(邪教語言)。PHP可以允許常量作為接口的一部分,而對于抽象的理解十分重要。

計算機上,對抽象的理解與自然語言中我們每天使用的抽象概念有所不同。比如,我們指代‘狗'、‘貓'等動物,我們會說‘那只狗/貓',他們就是具有狗/貓這類特征的具體實例。但是我們不能把貓和狗看作一類,也就是說你不能說狗是貓,我們可以把狗和貓都定義到動物這一類。所以我們把抽象定義為一個對象的基本特征,使他與其他對象明確區分開。

抽象類

抽象類里面可以有非抽象方法。但接口里只能有抽象方法。 聲明方法的存在而不去實現它的類被叫做抽像類(abstract class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽像類,并讓它指向具體子類的一個實例。不能有抽像構造函數或抽像靜態方法。Abstract 類的子類為它們父類中的所有抽像方法提供實現,否則它們也是抽像類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法。

先看一個普通類:

?php
class appletree{
  privated $catch;
  piblic function tree($sweet){
    $this->catch=$sweet;
    return $this->catch;
  }
$apple=new appletree();
$eat=$apple->tree('this apple is sweet');
echo $eat;
?>

再看一個抽象類:

//appletree.php:
?php
abstract class appletree{
  privated $catch;
  abstract public function tree1($sweet);
  public function tree2(){
    echo'smell';
  }
  public function _construct(){
    //......
    }
}
?>

?php
include_once('appletree.php');
class anothertree extends appletree{
  public function tree1($sweet){
    $this->catch='this apple is';
    return $this->catch.$sweet;
    }
  }
$apple=new appletree();
echo $apple->tree1('sweet');
?>

從普通類和抽象類可以看出:

抽象類和抽象方法前面定義必須有abstract,調用為extends。抽象類中可以有具體方法,并且具體方法可以在抽象類中實例化,然而抽象方法不可以在抽象類中實例化。

接口

oop模式中接口也是比不可少的一部分,接口(interface)是抽像類的變體。在接口中,所有方法都是抽像的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽像的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實現了該接口的類的任何對像上調用接口的方法。由于有抽像類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口。

具體例子如下:

//fruit.php

?php
interface fruit{
  public function apple($sweet);
  public function orange();
  }
?>

?php
include_once('fruit.php');
class fruittree implements fruit{
  privated $catch;
  public function apple($sweet){
    $this->catch='this fruit is';
    rerurn $this->catch.$sweet;
    }
  public function orange(){
    return 'this orange is sweet';
    }
  }
$tree=new fruittree();
echo $tree->apple('sweet');
echo $tree->orange();
?>

接口和常量

一個網上看到的例子:(接口名和常量之間要用間隔符‘::'隔開,接口中可以用靜態常量,變量不可以)

?php
interface TestInterface
{
  const CONSTVAR = 'aaa';
  static staticvar = 111;
  public function alert($str);
}
class TestClass implements TestInterface
{
  const CONSTVAR = 'bbb';
  public function __CONSTRUCT()
  {
    echo TestInterface::CONSTVAR;
  }
  public function alert($str)
  {
    echo $str;
  }
  public function __DESTRUCT()
  {
  }
}
$test1 = new TestClass();
?>

我們可以看出接口和抽象類的區別:

1、接口中沒有具體方法,都是抽象方法。
2、接口調用是implements,抽象類是extends。
3、接口中不可以聲明成員變量(包括類靜態變量),但是可以聲明類常量。抽象類中可以聲明各種類型成員變量,實現數據的封裝。
4、接口沒有構造函數,抽象類可以有構造函數。
5、接口中的方法默認都是public類型的,而抽象類中的方法可以使用private,protected,public來修飾。
6、一個類可以同時實現多個接口,但一個類只能繼承于一個抽象類。

使用選擇

如果要創建一個模型,這個模型將由一些緊密相關的對象采用,就可以使用抽象類。如果要創建將由一些不相關對象采用的功能,就使用接口。

如果必須從多個來源繼承行為,就使用接口。

如果知道所有類都會共享一個公共的行為實現,就使用抽象類,并在其中實現該行為。

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • php 接口類與抽象類的實際作用
  • php接口和抽象類使用示例詳解
  • 深入分析php中接口與抽象類的區別
  • PHP中抽象類、接口的區別與選擇分析
  • PHP中用接口、抽象類、普通基類實現“面向接口編程”與“耦合方法”簡述
  • PHP OPP機制和模式簡介(抽象類、接口和契約式編程)
  • PHP入門教程之面向對象的特性分析(繼承,多態,接口,抽象類,抽象方法等)
  • 淺析php中抽象類和接口的概念以及區別
  • PHP面向對象程序設計高級特性詳解(接口,繼承,抽象類,析構,克隆等)
  • 詳解PHP的抽象類和抽象方法以及接口總結
  • PHP中抽象類,接口功能、定義方法示例

標簽:濮陽 海北 黔東 梅河口 惠州 湘西 文山 廈門

巨人網絡通訊聲明:本文標題《PHP抽象類和接口用法實例詳解》,本文關鍵詞  PHP,抽象,類和,接口,用法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP抽象類和接口用法實例詳解》相關的同類信息!
  • 本頁收集關于PHP抽象類和接口用法實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 兴义市| 交城县| 信丰县| 乐清市| 儋州市| 明水县| 桐庐县| 石狮市| 赣榆县| 康保县| 澜沧| 蓝田县| 渑池县| 武强县| 淮滨县| 报价| 东台市| 荆门市| 松原市| 上思县| 安乡县| 腾冲县| 达孜县| 威海市| 钟祥市| 金秀| 云南省| 桐乡市| 乌鲁木齐县| 清镇市| 芜湖市| 兴海县| 腾冲县| 屯门区| 综艺| 佳木斯市| 晋江市| 吴江市| 丰镇市| 沙雅县| 阳东县|