PHP面向物件(OOP):抽象方法和抽象類(abstract)
在OOP語言中,一個類可以有一個或多個子類,而每個類都有至少一個公有方法做為外部程式碼訪問其的介面。而抽象方法就是為了方便繼承而引入的,我們先來看一下抽象類和抽象方法的定義再說明它的用途。
什麼是抽象方法?我們在類裡面定義的沒有方法體的方法就是抽象方法,所謂的沒有方法體指的是,在方法宣告的時候沒有大括號以及其中的內容,而是直接在宣告時在方法名後加上分號結束,另外在宣告抽象方法時還要加一個關鍵字“abstract”來修飾;
abstract function fun1(); abstract function fun2();
上例是就是“abstract”修飾的沒有方法體的抽象方法“fun1()”和“fun2()”,不要忘記抽象方法後面還要有一個分號;那麼什麼是抽象類呢?只要一個類裡面有一個方法是抽象方法,那麼這個類就要定義為抽象類
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(); //子類可以例項化物件,因為實現了父類中所有抽象方法 ?>
相關推薦
day26 面向物件的常用方法 和 元類的使用
1. 面向物件中的常用方法 ***** isinstance() # 判斷某個物件是不是某個類的例項 # 判斷stu物件是不是Student類的例項 是不是子類 issubclass() class Person: pass class Student(Person): pass stu = Stud
深入PHP面向物件、模式與實踐——模式原則(1)
組合 模式的啟示 通過以靈活的方式來組合物件,元件能在執行時被定義。《設計模式》將此提煉出一個原則:組合優於繼承。 組合與繼承 繼承是應對變化的環境及上下文設計的有效方式,然而它會限制靈活性,尤其是當類承擔了過多的責任的時候。 問題 以下圖
設計模式(Design Patterns)-可複用面向物件軟體的基礎 01:簡介(Abstract)
一、概述 設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。 使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。 毫無疑問,設計模式於己於他人與系統都是多贏的,可以使程式碼真正工程化。 設
PHP面向物件(OOP):抽象方法和抽象類(abstract)
在OOP語言中,一個類可以有一個或多個子類,而每個類都有至少一個公有方法做為外部程式碼訪問其的介面。而抽象方法就是為了方便繼承而引入的,我們先來看一下抽象類和抽象方法的定義再說明它的用途。 什麼是抽象方法?我們在類裡面定義的沒有方法體的方法就是抽象方法,所謂的沒有方法體
5.4-全棧Java筆記:面向對象進階之對象的轉型 | FINAL關鍵字 |抽象方法和抽象類
java對象的轉型(casting)引用變量只能調用它編譯類型的方法,不能調用它運行類型的方法。這時,我們就需要進行類型的強制轉換!【示例1】對象的轉型public class TestCasting { public static void main(String[] args) {
PHP面向物件(OOP):.static和const關鍵字的使用(self::)
static關鍵字是在類中描述成員屬性和成員方法是靜態的;靜態的成員好 處在哪裡呢?前面我們聲明瞭“Person”的人類,在“Person”這個類裡如果我們加上一個“人所屬國家”的屬性,這樣用“Person”這個類實 例化出幾百個或者更多個例項物件,每個物件裡面就都有“所屬國
抽象方法和抽象類知識總結
重寫 所有 抽象方法 知識 實例 可見 實現 virt 需要 抽象方法:沒有定義方法體的方法,抽象方法必須在子類中重寫。 抽象類:含有抽象方法的類為抽象類,抽象類中可以有普通方法,抽象類不能實例化,可以被繼承。 抽象方法也是虛方法,但不需要關鍵字virtual。 抽象類中
java abstract 關鍵字 抽象方法和抽象類的使用詳解
java abstract 關鍵字 抽象類 抽象方法 的使用詳解 1.關鍵字 2.抽象類 3.抽象方法 4.abstract不能用來修飾屬性、構造器、private、final、static 1.關鍵字
重走Java基礎:面向物件-抽象類(abstract)
抽象類,什麼是抽象類? 1. 抽象類的產生 當編寫一個類時,我們往往會為該類定義一些方法,這些方法是用來描述該類的功能具體實現方式,那麼這些方法都有具體的方法體。 但是有的時候,某個父類只是知道子類應該包含怎麼樣的方法,但是無法準確知道子類如何實現這些方法。比如一個圖形類應該有一
Java-抽象方法和抽象類
abstract關鍵字 由abstract修飾的方法為抽象方法,抽象方法只有方法的定義,誒歐方法體實現,用一個分號結尾; 一個類如果包含抽象方法,該類應該用abstract關鍵字宣告為抽象
PHP面向物件中魔術方法使用
一: PHP為我們提供了一系列用__開頭的函式,這些函式無需自己動手呼叫,會在何時的時機自動呼叫,稱這類函式為魔術函式。 如: function __construct( ) {} 在new一個新物件時自動呼叫此函式。 二: 1:建構函式__cons
php面向物件(OOP)—介面(interface)
PHP與大多數面向物件程式語言一樣,不支援多重繼承。也就是說每個類只能繼承一個父類。為了解決這個問題,PHP引入了介面,介面的思想是指定了一個實現了該介面的類必須實現的一系列方法。介面是一種特殊的抽象類,抽象類又是一種特殊的類,所以介面也是一種特殊的類,為 什麼說介面是一
PHP 進階之 抽象類(abstract)、接口(interface)、Trait(特征)
包含 中一 man ont 就是 類型 link array ike 抽象類 PHP 5 支持抽象類和抽象方法。定義為抽象的類不能被實例化。 抽象方法只能在抽象類中,抽象類中可以包含非抽象方法 被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現 繼承
PHP面向物件開發,關於呼叫父類構造器的問題
今天進行PHP開發時,發現子類的構造方法的引數必須與父類的構造方法引數一樣,否則會在網頁上進行警告,影響網頁的美觀。 目前的解決方法有三個: 1.通過調整PHP的錯誤提示等級。 2.使用父類的建構函式,子類的屬性單獨賦值。 3.解決方法如下: class a{ var $
java面向物件高階分層例項_測試類(main方法所在的類)
package bdqn.studentSys; /** * main類 * @author Administrator * */ import java.util.*; import bdqn.studentSys.Dao.StudentDao; import
類(class),抽象類(abstract), 介面(interface)的關係和區別
抽象類: 抽象類不能被例項化 抽象類可以不包含抽象類, 但是有抽象類的方法一定是抽象類 任何子類必須重寫父類的抽象方法, 或者自己也是抽象類 抽象類中的抽象方法只是宣告,不包含
Kotlin——最詳細的抽象類(abstract)、內部類(嵌套類)詳解
unit 建議 git 功能 pen 情況 master 這也 html 在前面幾個章節中,詳細的介紹了Kotlin類的類別中的數據類、密封類、接口類以及枚舉類。在這個章節中會對Koltin的抽象類和內部類作出一個詳細的講解。如果對上面所提到的類的類別還不是很清晰的,請閱
面向物件【day08】:異常處理(六)
本節內容 1、概述 2、異常梳理 3、異常梳理流程圖 4、異常大全 5、自定義異常 一、概述 異常處理是當程式出錯了,但是我們又不想讓使用者看到這個錯誤,而且我在寫程式的時候已經預料到了它可以出現這樣的錯誤,出現這樣的錯誤代表著什麼,我們可以提前處理這些個錯誤 二、異常處理 2.1 處理
vue中mixins的使用方法和注意點(詳)
mixins基礎概況 vue中的解釋是這樣的,如果覺得語言枯燥的可以自行跳過嘿~ 混入 (mixins): 是一種分發 Vue 元件中可複用功能的非常靈活的方式。混入物件可以包含任意元件選項。當元件使用混入物件時,所有混入物件的選項將被混入該元件本身的選項。 怎麼用? 舉個栗子: 定義一個混入
靜態方法和靜態變數(總結)
1.static方法是類中的一個成員方法,屬於整個類,即使不用建立任何物件也可以直接呼叫! static內部只能出現static變數和其他static方法!而且static方法中還不能使用this....等關鍵字..因為它是屬於整個類! 2.靜態方法效率上要比例項化高,靜態方法的缺點是不自動