PHP入門-Day8:物件導向

更新於 發佈於 閱讀時間約 12 分鐘

類別(Class)

類別是定義對象的模板,用來描述對象有哪些屬性和方法。

建構子(Constructor)

建構子是一種特殊的方法,在創建類的新實例(對象)時自動調用,用於初始化對象的屬性。

class Person {
public $name;

public function __construct($name) {
$this->name = $name;
}
}

$person = new Person("Alice");
echo $person->name; // 輸出:Alice

公開(Public)

公開訪問修飾符表示類的成員可以在類的內部和外部被訪問。

class Car {
public $brand; // 公開屬性

public function __construct($brand) {
$this->brand = $brand;
}

public function drive() {
echo "Driving the $this->brand car.";
}
}

$car = new Car("Toyota");
echo $car->brand; // 可以訪問公開屬性
$car->drive(); // 可以調用公開方法

私有(Private)

私有訪問修飾符表示類的成員只能在該類的內部訪問,無法在外部直接訪問。

class BankAccount {
private $balance; // 私有屬性

public function __construct($initialBalance) {
$this->balance = $initialBalance;
}

public function deposit($amount) {
$this->balance += $amount;
}

public function withdraw($amount) {
if ($amount <= $this->balance) {
$this->balance -= $amount;
} else {
echo "Insufficient funds.";
}
}

public function getBalance() {
return $this->balance; // 可以在內部訪問私有屬性
}
}

$account = new BankAccount(1000);
// $account->balance; // 無法直接訪問私有屬性
echo $account->getBalance(); // 可以間接訪問私有屬性的值
$account->deposit(500);
echo $account->getBalance(); // 輸出:1500
// $account->balance = 5000; // 無法直接設置私有屬性

受保護(Protected)

受保護訪問修飾符表示類的成員可以在該類的內部和其子類中訪問,但無法在外部直接訪問。

class Vehicle {
protected $type; // 受保護屬性

protected function setType($type) {
$this->type = $type;
}

protected function getType() {
return $this->type;
}
}

class Car extends Vehicle {
public function __construct($type) {
$this->setType($type); // 可以在子類中訪問受保護方法
}

public function displayType() {
echo "Vehicle type: " . $this->getType(); // 可以在子類中訪問受保護方法
}
}

$car = new Car("SUV");
$car->displayType(); // 輸出:Vehicle type: SUV
// $car->setType("SUV"); // 無法在外部訪問受保護方法或屬性
// echo $car->getType(); // 無法在外部訪問受保護方法或屬性

繼承(Inheritance)

繼承是指一個類(子類)從另一個類(父類)獲得屬性和方法的能力,可以重用和擴展父類的功能。

class Animal {
public function sound() {
echo "Animal makes a sound";
}
}

class Dog extends Animal {
public function sound() {
echo "Dog barks";
}
}

$dog = new Dog();
$dog->sound(); // 輸出:Dog barks

多型(Polymorphism)

多型是指同一個方法在不同的類中可以有不同的實現方式。它提供了靈活性和擴展性。

class Animal {
public function sound() {
echo "Animal makes a sound";
}
}

class Dog extends Animal {
public function sound() {
echo "Dog barks";
}
}

class Cat extends Animal {
public function sound() {
echo "Cat meows";
}
}

function makeSound(Animal $animal) {
$animal->sound();
}

$dog = new Dog();
$cat = new Cat();

makeSound($dog); // 輸出:Dog barks
makeSound($cat); // 輸出:Cat meows

封裝(Encapsulation)

封裝是一種將數據和操作數據的方法結合在一起的概念,通過訪問修飾符(public、private、protected)來控制對類的成員的訪問權限,達到隱藏內部實現的目的。

class Person {
private $name;

public function setName($name) {
$this->name = $name;
}

public function getName() {
return $this->name;
}
}

$person = new Person();
$person->setName("Alice");
echo $person->getName(); // 輸出:Alice

介面(Interface)

介面是一種僅包含方法聲明但不包含實現的抽象類型。類可以實現(implement)介面,並實現介面中定義的方法。

interface Logger {
public function log($message);
}

class FileLogger implements Logger {
public function log($message) {
// 實現記錄日誌到文件的方法
}
}

抽象類別(Abstract Class)

抽象類別是不能被實例化的類,用 abstract 關鍵字聲明,可以包含抽象方法和實現方法。

abstract class Shape {
abstract public function area();
}

class Circle extends Shape {
private $radius;

public function __construct($radius) {
$this->radius = $radius;
}

public function area() {
return pi() * pow($this->radius, 2);
}
}

靜態類別(Static Class)

靜態類別是指包含靜態成員(屬性和方法)的類,靜態成員可以在不創建類的實例的情況下訪問。

class MathUtility {
public static function add($a, $b) {
return $a + $b;
}
}

echo MathUtility::add(5, 3); // 輸出:8

列舉(Enumerations)

列舉是一種特殊的類型,用於定義一組具名的常量值。在 PHP 中,通常使用 enum 擴展來實現列舉。

enum WeekDays {
case Monday;
case Tuesday;
case Wednesday;
// 其他日子...
}

$day = WeekDays::Monday;

委派(Delegates)

在 PHP 中,"委派" 通常指的是事件委派,可以用來實現事件和事件處理器的分離。

Lambda 表達式

Lambda 表達式是一種匿名函數,可以作為參數傳遞給其他函數。

$add = fn($a, $b) => $a + $b;
echo $add(5, 3); // 輸出:8

泛型(Generics)

泛型是一種在類、接口、函數等中使用型別參數(type parameter)的機制,用來實現更靈活的程式碼重用和類型安全。

class Box<T> {
private $value;

public function __construct(T $value) {
$this->value = $value;
}

public function getValue(): T {
return $this->value;
}
}

反射(Reflection)

反射是指在運行時動態地檢查、操作類型(類、屬性、方法等)的能力,使得可以在運行時探索和使用 PHP 代碼的內部結構。

class MyClass {
private $name;
}

$reflectionClass = new ReflectionClass('MyClass');
$properties = $reflectionClass->getProperties(ReflectionProperty::IS_PRIVATE);
foreach ($properties as $property) {
echo $property->getName(); // 輸出:name
}

留言
avatar-img
留言分享你的想法!
avatar-img
Michael楊
17會員
111內容數
日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
Michael楊的其他內容
2024/07/14
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
2024/07/14
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
2024/07/14
本章介紹了 PHP 中的例外處理技術,包括其語法、常見異常類型以及如何主動觸發異常訊息。我們還學習了如何自定義異常類別,以便更好地管理和處理不同類型的異常情況。通過使用例外處理,可以提高程式碼的穩定性、可讀性和可維護性,並提供更優雅的錯誤信息處理機制。
Thumbnail
2024/07/14
本章介紹了 PHP 中的例外處理技術,包括其語法、常見異常類型以及如何主動觸發異常訊息。我們還學習了如何自定義異常類別,以便更好地管理和處理不同類型的異常情況。通過使用例外處理,可以提高程式碼的穩定性、可讀性和可維護性,並提供更優雅的錯誤信息處理機制。
Thumbnail
2024/07/14
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
2024/07/14
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
看更多
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節是Java入門的第八天,主要介紹物件導向的概念。這包括了類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、Lambda表達式、泛型和反射等主題。每個主題都配有相關的程式碼範例,以協助讀者更好地理解這些概念。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
本章節是一個初級的 TypeScript 教學,主要介紹了 TypeScript 中物件導向程式設計的各種核心概念,包括類別、建構子、存取修飾子、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等。每個概念都通過詳細的解釋和實例代碼來進行深入的介紹。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
從基本的OOP概念、PHP基礎回顧,到類別與物件的深入探討、進階概念如繼承、介面與抽象類別,再到實戰應用與設計模式入門,最後以課程總結與未來學習資源提供作結。此課程架構確保學生能夠從基礎到進階,全面掌握PHP物件導向程式設計的核心概念與技術。
Thumbnail
從基本的OOP概念、PHP基礎回顧,到類別與物件的深入探討、進階概念如繼承、介面與抽象類別,再到實戰應用與設計模式入門,最後以課程總結與未來學習資源提供作結。此課程架構確保學生能夠從基礎到進階,全面掌握PHP物件導向程式設計的核心概念與技術。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News