面向对象(OOP)一
一、面向對象理論
1)面向對象概念
面向對象編程(object Oriented Programming,OOP),是一種計算機編程構架,OOP達到軟件工程的三個目標重用、靈活和擴展性。
2)什么是對象?
對象是系統中用來描述客觀事物的一個實體,包含了若干變量和函數的一個軟件集合。客觀世界是由對象和對象之間的聯系組成。
(萬事萬物皆對象)
3)什么是類?
類是一組有相同屬性和方法的一組對象集合。它屬于該類的所有對象提供了統一的抽象描述。其內部包括屬性和方法兩個主要部分。
4)類和對象的關系
類和對象的關系就好比如模具和鑄件的關系。類的實例化結果就是對象,而對一類的對象抽象就是類。類描述了一組有相同特征(屬性)和相同行為(方法)的對象。
屬性:類的靜態描述,相當于變量。
方法:類的動態描述,相當于方法。
5)類的定義 :? ? ? class 類名
命名規則:駝峰式命名,首字母大寫,如果多個單詞,每個單詞首字母大寫
demo:
class car{
public $color;//顏色,靜態 屬性,相當于一個變量
//開動,動態,方法,相當于一個函數
public function run(){
echo "開車";
}
}
$car1 = new car();//實例化得到一個對象,該對象擁有car類的屬性和方法
$car1->color="red";屬性調用,對象->屬性? 這部汽車為紅色,給color屬性附上紅色
echo $car1->color //輸出red;
$car1->run();//方法調用 對象->方法
在對象的外部訪問成員的形式是 對象->成員?如果在對象內部則使用一個本對象的引用 "$this?"每個對象都有一個對象的引用"$this?"來代表這個對象,完成對象內部的調用
大多數類都有一種統稱為構造函數的特殊方法,當創建一個對象時,它將自動調用構造函數,也就是使用new關鍵字來實例化對象的時候就自動調用構造方法。
構造函數的定義有兩種
1、與類名同名
2、__construct(); php5后支持;推薦使用
在一個類中只能有且一個構造方法,只有每次創建對象的時候去調用一次構造方法,不能主動調用,所以它通常執行一些有用的初始化任務,比如對成員屬性的賦值等。
? 與構造函數相對的就是析構函數,析構函數時PHP5新加的內容,析構函數允許在銷毀一個對象之前執行一些操作和完成一些功能。比如說關閉文件、釋放結果集等,其意義遠不及構造函數。
析構函數在對象所有引用都被刪除或對象被顯性銷毀是執行
析構函數的定義: __destruct();
析構函數無法傳參
二、繼承和重載
繼承是面向對象的重要特性之一。繼承是子類自動共享父類的數據結構和方法的機制。這是類之間的一種關系。子類可以再父類的基礎上定義自己的屬性和方法。
通過繼承機制,可以利用現有的數據類型來定義新的數據類型,所定義的新的數據類型不僅有新定義的成員,還擁有舊的成員。我們稱已存在的用來派生的新類叫基類,又稱為父類或超類,派生出來的新類稱為派生類或子類。
繼承關鍵字:?? extents
單繼承與多繼承: PHP只支持單繼承
所謂的方法重載就是定義相同的方法名,嚴格來說php中的方法是不能重載的,這里說的重載方法是指子類覆蓋父類已有的方法,一般又稱為重寫。
在子類中,重寫/覆蓋從父類中繼承過來的屬性和方法
多態
在類中只要參數的個數或類型不同,方法可以重名,又稱為多態。
php不支持,只有強類型語言才可以實現。
強類型語言:java c#等
php無法實現多態、因為php是弱類型語言,與多態的概念沖突
類型的訪問修飾符都成員的訪問進行限制,分別有:
public 公共的 ??同一個類中 類的子類? 所有的外部成員
protected 受保護的? ? ?同一個類中 類的子類
private 私有的 同一個類中
重載的屬性/方法 不能小于父類
public>protected>private
三、封裝
封裝性把對象的成員屬性和成員方法結合成了一個獨立的相同的單位,并盡可能隱藏其內部細節,只保留可以對外有訪問權限的方法和外部產生聯系。
四、final關鍵字
final只能用來定義類和方法,不能定義屬性
使用final 關鍵字的類不能被繼承,使用final 關鍵字的方法不能被子類覆蓋,是最終版本。
定義:final class 類名? 、final public function 方法名();
轉載于:https://www.cnblogs.com/data2018/p/9768736.html
總結
以上是生活随笔為你收集整理的面向对象(OOP)一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql常见的运算符及使用
- 下一篇: OPENSTACK重装系统失败导致虚拟机