1. 程式人生 > >php面向物件的基礎題

php面向物件的基礎題

1、什麼是面向物件?(理解著回答)

答:面向物件OO = 面向物件的分析OOA + 面向物件的設計OOD + 面向物件的程式設計OOP;通俗的解釋就是“萬物皆物件”,把所有的事物都看作一個個可以獨立的物件(單元),它們可以自己完成自己的功能,而不是像C那樣分成一個個函式。

現在純正的OO語言主要是Java和C#,PHP、C++也支援OO,C是面向過程的。

2、簡述 private、 protected、 public修飾符的訪問許可權。

答:private : 私有成員, 在類的內部才可以訪問。

protected : 保護成員,該類內部和繼承類中可以訪問。

public : 公共成員,完全公開,沒有訪問限制。

3、堆和棧的區別?

答:棧是編譯期間就分配好的記憶體空間,因此你的程式碼中必須就棧的大小有明確的定義;

堆是程式執行期間動態分配的記憶體空間,你可以根據程式的執行情況確定要分配的堆記憶體的大小。

4、XML 與 HTML 的主要區別

答:(1) XML是區分大小寫字母的,HTML不區分。
(2) 在HTML中,如果上下文清楚地顯示出段落或者列表鍵在何處結尾,那麼你可以省略
或者
之類的結束 標記。在XML中,絕對不能省略掉結束標記。
(3) 在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個 / 字元作為結尾。這樣分析器就知道不用 查詢結束標記了。
(4) 在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。
(5) 在HTML中,可以擁有不帶值的屬性名。在XML中,所有的屬性都必須帶有相應的值。

5、面向物件的特徵有哪些方面?

答:主要有封裝,繼承,多型。如果是4個方面則加上:抽象。
下面的解釋為理解:
封裝:
封裝是保證軟體部件具有優良的模組性的基礎,封裝的目標就是要實現軟體部件的高內聚,低耦合,防止程式相互依賴性而帶來的變動影響.
繼承:
在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並可以加入若干新的內容,或修改原來的方法使之更適合特殊的需要,這就是繼承。繼承是子類自動共享父類資料和方法的機制,這是類之間的一種關係,提高了軟體的可重用性和可擴充套件性。
多型:
多型是指程式中定義的引用變數所指向的具體型別和通過該引用變數發出的方法呼叫在程式設計時並不確定,而是在程式執行期間才確定,即一個引用變數倒底會指向哪個類的例項物件,該引用變數發出的方法呼叫到底是哪個類中實現的方法,必須在由程式執行期間才能決定。
抽象:
抽象就是找出一些事物的相似和共性之處,然後將這些事物歸為一個類,這個類只考慮這些事物的相似和共性之處,並且會忽略與當前主題和目標無關的那些方面,將注意力集中在與當前目標有關的方面。例如,看到一隻螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。

6、抽象類和介面的概念以及區別?

答:抽象類:它是一種特殊的,不能被例項化的類,只能作為其他類的父類使用。使用abstract關鍵字宣告。
它是一種特殊的抽象類,也是一個特殊的類,使用interface宣告。
(1)抽象類的操作通過繼承關鍵字extends實現,而介面的使用是通過implements關鍵字來實現。
(2)抽象類中有資料成員,可以實現資料的封裝,但是介面沒有資料成員。
(3)抽象類中可以有構造方法,但是介面沒有構造方法。
(4)抽象類的方法可以通過private、protected、public關鍵字修飾(抽象方法不能是private),而介面中的方法只能使用public關鍵字修飾。
(5)一個類只能繼承於一個抽象類,而一個類可以同時實現多個介面。
(6)抽象類中可以有成員方法的實現程式碼,而介面中不可以有成員方法的實現程式碼。

7、什麼是建構函式,什麼是解構函式,作用是什麼?

答:建構函式(方法)是物件建立完成後第一個被物件自動呼叫的方法。它存在於每個宣告的類中,是一個特殊的成員方法。作用是執行一些初始化的任務。Php中使用__construct()宣告構造方法,並且只能宣告一個。
解構函式(方法)作用和構造方法正好相反,是物件被銷燬之前最後一個被物件自動呼叫的方法。是PHP5中新新增的內容作用是用於實現在銷燬一個物件之前執行一些特定的操作,諸如關閉檔案和釋放記憶體等。

8、如何過載父類的方法,舉例說明

答:過載,即覆蓋父類的方法,也就是使用子類中的方法替換從父類中繼承的方法,也叫方法的重寫。
覆蓋父類方法的關鍵是在子類中創建於父類中相同的方法包括方法的名稱、引數和返回值型別。PHP中只要求方法的名稱相同即可。

9、常用的魔術方法有哪些?舉例說明

答:php規定以兩個下劃線(__)開頭的方法都保留為魔術方法,所以建議大家函式名最好不用__開頭,除非是為了過載已有的魔術方法。
__construct() 例項化類時自動呼叫。
__destruct() 類物件使用結束時自動呼叫。
__set() 在給未定義的屬性賦值的時候呼叫。
__get() 呼叫未定義的屬性時候呼叫。
__isset() 使用isset()或empty()函式時候會呼叫。
__unset() 使用unset()時候會呼叫。
__sleep() 使用serialize序列化時候呼叫。
__wakeup() 使用unserialize反序列化的時候呼叫。
__call() 呼叫一個不存在的方法的時候呼叫。
__callStatic()呼叫一個不存在的靜態方法是呼叫。
__toString() 把物件轉換成字串的時候會呼叫。比如 echo。
__invoke() 當嘗試把物件當方法呼叫時呼叫。
__set_state() 當使用var_export()函式時候呼叫。接受一個數組引數。
__clone() 當使用clone複製一個物件時候呼叫。

10、$this和self、parent這三個關鍵詞分別代表什麼?在哪些場合下使用?

答:$this 當前物件
self 當前類
parent 當前類的父類
$this在當前類中使用,使用->呼叫屬性和方法。
self也在當前類中使用,不過需要使用::呼叫。
parent在類中使用。

11、類中如何定義常量、如何類中呼叫常量、如何在類外呼叫常量。

答:類中的常量也就是成員常量,常量就是不會改變的量,是一個恆值。
定義常量使用關鍵字const.
例如:const PI = 3.1415326;
無論是類內還是類外,常量的訪問和變數是不一樣的,常量不需要例項化物件,
訪問常量的格式都是類名加作用域操作符號(雙冒號)來呼叫。
即:類名 :: 類常量名;

12、作用域操作符::如何使用?都在哪些場合下使用?

答:呼叫類常量
呼叫靜態方法

13、__autoload()方法的工作原理是什麼?

答:使用這個魔術函式的基本條件是類檔案的檔名要和類的名字保持一致。
當程式執行到例項化某個類的時候,如果在例項化前沒有引入這個類檔案,那麼就自動執行__autoload()函式。
這個函式會根據例項化的類的名稱來查詢這個類檔案的路徑,當判斷這個類檔案路徑下確實存在這個類檔案後
就執行include或者require來載入該類,然後程式繼續執行,如果這個路徑下不存在該檔案時就提示錯誤。
使用自動載入的魔術函式可以不必要寫很多個include或者require函式。

相關推薦

php面向物件基礎

1、什麼是面向物件?(理解著回答)答:面向物件OO = 面向物件的分析OOA + 面向物件的設計OOD + 面向物件的程式設計OOP;通俗的解釋就是“萬物皆物件”,把所有的事物都看作一個個可以獨立的物件(單元),它們可以自己完成自己的功能,而不是像C那樣分成一個個函式。現在純

PHP篇】面向物件基礎

1、宣告:class 類名{                          //成員屬性(變數) 修飾符 $變數名=初值;       &nb

PHP面向物件程式設計(1)基礎

一、面向物件OOP(Oriented Object Programming)   面向過程的程式設計 將要實現的功能描述為一個從一開始到結束的連續的“步驟(過程)”。 一次逐步完成這些步驟。如果步驟比較大,又可以將該步驟細分為子步驟,以此類推。 程式從頭開

7-1 jmu-Java-03面向物件基礎-04-形狀-繼承 (10 分)計科其他班的

前言 前面題目形狀中我們看到,為了輸出所有形狀的周長與面積,需要建立多個數組進行多次迴圈。這次試驗使用繼承與多型來改進我們的設計。 本題描述: 定義抽象類Shape 屬性:不可變靜態常量double PI,值為3.14, 抽象方法:public double getPerimet

PHP面向物件開發基礎與例項

<1> 面向物件涉及到軟體開發的各個方面,如面向物件分析(OOA),面向物件的設計(OOD),面向物件的程式設計實現(OOP)。 <2> 面向物件的要素包括:抽象性;封裝性;共享性;強調物件結構而不是程式結構。 <3> 封裝,繼承與多型是面向物件開發的三大特點,缺一不可。

PHP簡明教程-面向物件基礎 2

PHP簡明教程 面向物件基礎 2 其他的幾個魔術方法 方法名 觸發時機 引數1 引數2 備註 __callStatic 當呼叫不存在的靜態方法的時候自動

全面解析PHP面向物件的三大特徵

PHP面向物件的三大特徵: 繼承,封裝,多型 一.繼承 1、如何實現繼承? 給子類使用extends關鍵字,讓子類繼承父類; class Student extends Person{} 2、實現繼承的注意事項? ① 子類只能繼承父類的非私有屬性。 ②子類繼承父類後,相當於將父類的屬性和方法co

PHP面向物件之介面

PHP與大多數面向物件程式語言一樣,不支援多重繼承。也就是說每個類 只能繼承一個父類。 為了解決此問題,PHP引入了介面。 介面的思想是指定了一個實現該介面的類必須實現的一系列方法。 介面是一種特殊的抽象類,抽象類是一種特殊的類,所以介面也是一種特殊的類。   為什

java學習02(面向物件基礎

1.物件可以簡單認識成一個記憶體塊,一個區域。 2.記憶體分為:棧記憶體,堆記憶體,方法區(堆的一部分,包括類的資訊,靜態方法,靜態變數,字串常量),這點對理解很多東西都很有用 3.包先簡單理解成一個資料夾(域名倒著寫) 4.面向物件: 繼承: 類只能單繼承,接口才可以多繼承 子類建構函式呼叫前預

淺談PHP面向物件程式設計(九)

9.0 設計模式   在編寫程式時經常會遇到一此典型的問題或需要完成某種特定需求,設計模式就是針對這些問題和需求,在大量的實踐中總結和理論化之後優選的程式碼結構程式設計風格,以及解決問題的思考方式。 設計模式就像是經典的棋譜。不同的棋局,使用不同的棋諧,免得自己再去思考和模索。本節將針對PHP應用程式

php面向物件魔術方法筆記

<?php //魔術方法 //__get方法:當程式設計師去使用不可訪問的屬性時;系統就會呼叫__get方法 //不可訪問的屬性是指:該屬性不存在;直接訪問了protected或者private屬性 //__set方法:當程式設計師去給不可訪問的屬性賦值時系統會去呼叫__set方法 //示例: he

淺談PHP面向物件程式設計(五)

5.0 繼承   5.1 繼承的概念      在現實生活中,繼承一般指的是子女繼承父輩的財產。在程式中,繼承描述的是事物之間的所屬關係,通過繼承可以使許多事物之間形成一種關係體系 。     例如貓和狗都屬於動物,程式中便可以描述為貓和

php面向物件(目錄操作)

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

week6:面向物件基礎

一、基本概念 1.1、python  函式式+面向物件 函數語言程式設計可以做所有的事,是否合適? 函式:def+函式名(引數): 二、面向物件 2.1、如何建立類 class 類名:         pass  

初探PHP面向物件與設計模式-策略模式

1. 什麼是策略模式 簡單的講就是實現一個問題的多種方法就是策略設計模式,我們在開發微信公眾號時,有一組被動接收微信訊息的介面(例如:普通文字訊息、關注事件訊息、取消關注事件訊息……),針對不同的訊息有多種處理方式,有處理文字有處理關注事件的等等我們使用的邏輯演算法都不一樣,當然啦業

淺談PHP面向物件程式設計(七)

7.0 抽象類與介面   當定義一個類時,常常需要定義一些方法來描述該類的行為特徵、但有時這些方法的實現方式是無法確定的,此時就可以使用抽象類和介面。 抽象類和介面用於提高程式的靈活性、抽象類是一種特殊的類,而介面又是一種待殊的抽象類。 接下來本節將針對抽象類和介面進行詳細講解。 7.

淺談PHP面向物件程式設計(六)

6.0 自動載入及魔術方法    6.1 自動載入 在PHP開發過程中,如果希望從外部引入一個class.通常會使用incluae和requre方法把定義這個class的檔案包含進來。但是,在大型的開發專案中,這麼做會產生大量的require或者include方法的使用。這樣不僅

淺談PHP面向物件程式設計(二)

和一些面向物件的語言有所不同,PHP並不是一種純面向物件的語言,包PIP它支援面向物件的程式設計,並可以用於開發大型的商業程式。因此學好面向物件輸程對PHP程式設計師來說也是至關重要的。本章並針對面向物件程式設計在PIP語言中的使用進行詳細講解。 2.1 面向物件概述   面向物件是一種符

淺談PHP面向物件程式設計(一)

傳統的面向過程   將要完成的工作,分作若干個步驟,或再細分為子步驟,然後後步驟從前往後一步一步完成,最初達致目標。 現代的面向物件   將要完成的工作拆分為“一個一個物件”的任務(功能),每個物件獨自完成自己的任務,任務之間的連結通過“呼叫”來實現,最終也完成了整體的工

10 面向物件基礎(三)

10.1私有屬性和私有方法 class Dog(object): def __init__(self): self.__age = 10 # 在屬性名前面加倆下劃線,將屬性私有化,這個屬性稱為私有屬性(一般不允許物件來訪問修改這個屬性) # def