首頁 後端開發 php教程 php多态与接话把现的代码实例

php多态与接话把现的代码实例

Jun 13, 2016 am 11:00 AM
echo function nbsp public

php多态与接口实现的代码实例
在PHP中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等。我们无法说php5中多态的是变量。

我们只能说在php5中,多态应用在方法参数的类型提示位置。

一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求。所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求。简单的说,一个类拥有其父类、和已实现接口的身份

通过实现接口实现多态
下面的例子中,useradmin类的静态方法,要求一个user类型的参数。

在后面的使用中,传递了一个实现了user接口的类normaluser的实例。代码成功运行。

   
    interface user{ // user接口
     public function  getname();
     public function setname($_name);
    }

    class normaluser implements user { // 实现接口的类.
     private $name;
     public function getname(){
      return $this->name;
     }
     public function setname($_name){
      $this->name = $_name;
     }
    }

    class useradmin{ //操作.
     public static function  changeusername(user $_user,$_username){
      $_user->setname($_username);
     }
    }

    $normaluser = new normaluser();
    useradmin::changeusername($normaluser,"tom");//这里传入的www.3ppt.com是 normaluser的实例.
    echo $normaluser->getname();
    ?>


php 接口类:interface

其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 :

代码如下:

    interface shop
    {
    public function buy($gid);
    public function sell($gid);
    public function view($gid);
    }

我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事,如:

代码如下:

    class baseshop implements shop
    {
    public function buy($gid)
    {
    echo('你购买了id为 :'.$gid.'的商品');
    }
    public function sell($gid)
    {
    echo('你卖了id为 :'.$gid.'的商品');
    }
    public function view($gid)
    {
    echo('你查看了id为 :'.$gid.'的商品');
    }
    }


下面缩一下方法

        interface myusbkou
    {
        function type();//类型
        function action();//执行的操作
    }
    class zip implements myusbkou
    {  //继承接口
        function type()
        {
            echo "usb的2.0接口";
        }
        function action()
        {
            echo "--->需要usb 2.0驱动";
        }
    }
    class mp3 implements myusbkou
    {
        function type()
        {
         echo "mp3的1.0接口";
        }
        function action()
        {
         echo "--->需要mp3 1.0驱动
";
        }
    }
    class mypc
    {
        function usbthing($thing)
        {
            $thing->type();
            $thing->action();
        }
    }
    $p=new mypc();
    $mp3=new mp3();
    $zip=new zip();
    $p->usbthing($mp3);
    $p->usbthing($zip);
    ?>

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

解決方法:您的組織要求您更改 PIN 碼 解決方法:您的組織要求您更改 PIN 碼 Oct 04, 2023 pm 05:45 PM

解決方法:您的組織要求您更改 PIN 碼

Windows 11 上調整視窗邊框設定的方法:變更顏色和大小 Windows 11 上調整視窗邊框設定的方法:變更顏色和大小 Sep 22, 2023 am 11:37 AM

Windows 11 上調整視窗邊框設定的方法:變更顏色和大小

如何在 Windows 11 上變更標題列顏色? 如何在 Windows 11 上變更標題列顏色? Sep 14, 2023 pm 03:33 PM

如何在 Windows 11 上變更標題列顏色?

Windows 11 上啟用或停用工作列縮圖預覽的方法 Windows 11 上啟用或停用工作列縮圖預覽的方法 Sep 15, 2023 pm 03:57 PM

Windows 11 上啟用或停用工作列縮圖預覽的方法

OOBELANGUAGE錯誤Windows 11 / 10修復中出現問題的問題 OOBELANGUAGE錯誤Windows 11 / 10修復中出現問題的問題 Jul 16, 2023 pm 03:29 PM

OOBELANGUAGE錯誤Windows 11 / 10修復中出現問題的問題

Windows 11 上的顯示縮放比例調整指南 Windows 11 上的顯示縮放比例調整指南 Sep 19, 2023 pm 06:45 PM

Windows 11 上的顯示縮放比例調整指南

10種在 Windows 11 上調整亮度的方法 10種在 Windows 11 上調整亮度的方法 Dec 18, 2023 pm 02:21 PM

10種在 Windows 11 上調整亮度的方法

如何在Safari中關閉iPhone的隱私瀏覽身份驗證? 如何在Safari中關閉iPhone的隱私瀏覽身份驗證? Nov 29, 2023 pm 11:21 PM

如何在Safari中關閉iPhone的隱私瀏覽身份驗證?

See all articles