1. 程式人生 > >PHP面向物件----(interface區別abstract)

PHP面向物件----(interface區別abstract)

抽象類和介面的異同
1. 相同點:

(1)兩者都是抽象類,都不能例項化。

(2) interface 實現類及 abstract class 的子類都必須要實現已經宣告的抽象方法。

2.不同點:

(1)interface 需要實現,要用 implements ,而 abstract class 需要繼承,要用 extends 。

(2)一個類可以實現多個 interface ,但一個類只能繼承一個 abstract class 。

(3)interface 強調特定功能的實現,而 abstract class 強調所屬關係。

(4)interface 中的每一個方法都是抽象方法,都只是宣告的 (declaration, 沒有方法體 ) ,實現類必須要實現。而 abstract class 中並非所有的方法都是抽象的,只有那些冠有 abstract 的方法才是抽象的,子類必須實現。

(5) abstract class 是 interface 與 class 的中介。 abstract class 在 interface 及 class 中起到了承上啟下的作用。一方面, abstract class 是抽象的,可以宣告抽象方法,以規範子類必須實現的功能;另一方面,它又可以定義預設的方法體,供子類直接使用或覆蓋。另外,它還可以定義自己的例項變數,以供子類通過繼承來使用。

(6)介面中的抽象方法前不用也不能加 abstract 關鍵字,預設隱式就是抽象方法,也不能加 final 關鍵字來防止抽象方法的繼承。而抽象類中抽象方法前則必須加上 abstract 表示顯示宣告為抽象方法。

(7)介面中的抽象方法只能是 public 的,不能用 private , protected 修飾符修飾。而抽象類中的抽象方法則可以用 public , protected 來修飾,但不能用 private 。

相關推薦

PHP面向物件----interface區別abstract

抽象類和介面的異同 1. 相同點: (1)兩者都是抽象類,都不能例項化。 (2) interface 實現類及 abstract class 的子類都必須要實現已經宣告的抽象方法。 2.不同點: (1)interface 需要實現,要用 impleme

php面向物件目錄操作

目錄操作 建立目錄 Mkdir(目錄地址,許可權,是否遞迴建立=false); Rmdir(目錄地址) 刪除目錄 僅僅可以刪除空目錄。(不支援遞迴刪除) 移動(改名) Rename(舊地址,新地址) 該函式也支援操作檔案。 獲取目錄內容(檔案) 開啟目錄 目錄控制代碼 

php面向物件2值傳遞

PHP中值傳遞方式,2中   值傳遞:傳遞的時候,拷貝的是資料本身。預設都是值傳遞     結果:傳遞完成,有了2份同樣的資料,且2個變數“相互獨立”,不會相互影響   引用傳遞:傳遞的時候,拷貝的是引用關係(資料的記憶體地址)。需要使用“&”符合才能實現引用傳遞     結果:傳遞完成,資料

PHP面向物件OOP

 自動載入類 __autoload(){} 會在使用尚未被定義的類的時候自動呼叫此函式,autoload函式接收一個引數,即需要引入的類名。 function __autoload($className){ require_once $className.".ph

PHP面向物件:繼承與多型

1、繼承     繼承性:B類的物件擁有A類的全部屬性與行為,稱作B對A類的繼承。     好處:     1:提高了程式碼的複用性。     2:讓類與類之間產生了關係,提供了另一個特徵多型的前提     弊端:     打破了封裝性。對於一些類,或者類中功能,

php面向物件OOP—呼叫成員和方法

<?php class Person {//下面是人的成員屬性var $name; //人的名子var $sex; //人的性別var $age; //人的年齡//下面是人的成員方法function say() { //這個人可以說話的方法echo "我的名子叫:"

PHP面向物件----私有屬性的訪問方法

<?php //對私有屬性的訪問方法一(系統方法) class A { private $name = 'hello world'; function __set($prop

php面向物件工廠模式與單例模式

今天剛學習了php的設計模式,一個是工廠模式而另一個是單例模式,工廠模式設計出來就是為了一種方便建立物件而做出來的。還有一個是單例模式,單例模式的設計有些比較難以理解,我們必須一步一步的分析:單例類的情況必須去建立類的例項,而且必須只有一個,首先沒有物件例項的情況就是將它的

PHP面向物件

self-----------代表類本身,只能在當前類內部的函式中使用,代表程式碼所在的類;$this----------代表當前類的當前物件(在物件呼叫的方法中使用$this 就代表哪個類的物件),在子類物件呼叫繼承自父類的方法時,方法中的$this 是子類的物件;;如果是

php面向物件-建構函式

今日重點:建構函式 建構函式 __construct() class Human { public $name = '李四'; public $gender = '男'; } $a = new Human(); $b = new Huma

php面向物件OOP—什麼是面向物件

面向物件程式設計(Object Oriented Programming, OOP, 面向物件程式設計)是一種計算機程式設計架構,OOP的一條基本原則是計算機程式是由單個能夠起到子程式作用的單元或物件

Python開發【第七篇】:面向物件進階篇

上一篇《Python 面向物件(初級篇)》文章介紹了面向物件基本知識: 面向物件是一種程式設計方式,此程式設計方式的實現是基於對 類 和 物件 的使用 類 是一個模板,模板中包裝了多個“函式”供使用(可以講多函式中公用的變數封裝到物件中) 物件,根據模板

C++基礎教程面向物件學習筆記1

歡迎使用面向物件程式設計: 首先你應該看一下變數,初始化和賦值,我們在C ++中將物件定義為“可用於儲存值的一塊記憶體”。具有名稱的物件稱為變數。 在傳統的程式設計中(我們在此之前一直在做的),程式基本上是計算機的指令列表,它們定義資料(通過物件),然後使用該資

C++基礎教程面向物件學習筆記2

1.1類和類成員 前面發了兩篇似乎是無關緊要的,但是我希望還是可以看看,畢竟介紹了我們接下來要學的內容以及我的一些中肯的建議。 雖然C ++提供了許多基本資料型別(例如char,int,long,float,double等等),這些型別通常足以解決相對簡單的問

C++基礎教程面向物件學習筆記6

重疊和委託建構函式 具有重疊功能的建構函式 例項化新物件時,C ++編譯器會隱式呼叫該物件的建構函式。具有多個具有重疊功能的建構函式的類並不罕見。考慮以下類: class Foo { public: Foo() { // 程式碼A

python 面向物件進階篇

本篇將詳細介紹Python 類的成員、成員修飾符、類的特殊成員。 類的成員 類的成員可以分為三大類:欄位、方法和屬性 注:所有成員中,只有普通欄位的內容儲存物件中,即:根據此類建立了多少物件,在記憶體中就有多少個普通欄位。而其他的成員,則都是儲存在類中,即:無論物件

02.Java面向物件思維導圖

面向物件是Java的一個重要的概念(萬物皆物件),是不是很抽象? @--圖片來源於網路---------------------------------------------------------------------------------- 學習面向物件前先了解下Java

黑馬程式設計師_面向物件思維導圖

----------------------<ahref="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<ahref="http://edu.csdn.net"target="blank">.

PHP面向物件(OOP):抽象方法和抽象類abstract

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

面向物件設計原則 介面分離原則Interface Segregation Principle

介面隔離原則   使用多個專門的介面,而不使用單一的總介面,即客戶端不應該依賴那些它不需要的介面。   從介面隔離原則的定義可以看出,他似乎跟SRP有許多相似之處。 是的其實ISP和SRP都是強調職責的單一性, 介面隔離原則告訴我們在定義介面的時候要根據職責定義“較小”的介面