搜尋
首頁後端開發PHP問題如何理解php的抽象方法
如何理解php的抽象方法Nov 04, 2020 pm 02:00 PM
php抽象方法

理解php抽象方法是:1、在OOP語言中,每個類別都有至少一個公有方法做為外部程式碼存取其的接口,抽象方法就是為了方便繼承而引入的;2、在類別裡面定義的沒有方法體的方法就是抽象方法。

如何理解php的抽象方法

php的抽象方法是:

在OOP語言中,一個類別可以有一個或多個子類,而每個類別都有至少一個公有方法做為外部程式碼存取其的介面。 而抽象方法就是為了方便繼承而引入的,我們先來看抽象類別和抽象方法的定義再說明它的用途。

什麼是抽象方法?我們在類別裡面定義的沒有方法體的方法就是抽象方法,所謂的沒有方法體指的是,在方法聲明的時候沒有大括號以及其中的內容,而是直接在聲明時在方法名後加上分號結束,另外在聲明抽象方法時還要加一個關鍵字“abstract”來修飾;

abstract function fun1();
abstract function fun2();

上例是就是“abstract”修飾的沒有方法體的抽象方法“ fun1()”和“fun2()”,不要忘記抽象方法後面還要有一個分號;那麼什麼是抽象類別呢?只要一個類別裡面有一個方法是抽象方法,那麼這個類別就要定義為抽象類,抽象類別也要使用「abstract」關鍵字來修飾;在抽象類別裡面可以有不是抽象的方法和成員屬性,但只要有一個方法是抽象的方法,這個類別就必須聲明為抽象類,使用”abstract”來修飾。

abstract class Demo
{
    var $test;
    abstract function fun1();
    abstract function fun2();
    function fun3(){
        ...
    }
}

上例中定義了一個抽象類別“Demo”使用了”abstract”來修飾, 在這個類別裡面定義了一個成員屬性“$test”,和兩個抽象方法“fun1”和“ fun2”,還有一個非抽象的方法fun3();那麼抽象類別我們要怎麼使用呢?最重要的一點就是抽象類別不能產生實例對象, 所以也不能直接使用,前面我們多次提到類別不能直接使用,我們使用的是透過類別實例化出來的對象,那麼抽象類別就不能產生實例對像我們聲明抽象類別有什麼用呢?我們是將抽象方法是做為子類別重載的模板使用的,定義抽象類別就等於定義了一種規範,這種規範要求子類別去遵守,子類別繼承抽象類別之後,把抽象類別裡面的抽象方法按照子類別的需要實作。 子類別必須把父類別中的抽象方法全部都實現,否則子類別中還存在抽象方法,那麼子類別還是抽象類,還是不能實例化類別;為什麼我們非要從抽象類別繼承呢?因為有的時候我們要實作一些功能就必須從抽象類別中繼承,否則這些功能你就實作不了,如果繼承了抽象類,就要實作類別其中的抽象方法;

<?
abstract class Demo
{
    var $test;
    abstract function fun1();
    abstract function fun2();
    function fun3() {
        ...
    }
}
$demo=new Demo(); //抽象类不能产生实例对象,所以这样做是错的,实例化对象交给子类
class Test extends Demo
{
    function fun1() {
        ...
    }
    function fun2() {
        ...
    }
}
$test = new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法
?>

相關免費學習推薦:php程式設計(影片)

#

以上是如何理解php的抽象方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器