物件導向程式設計基礎:類別、物件、封裝、繼承和多型

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

兩大基礎概念

  1. 類別Class
  2. 物件Object

三大特性

  1. 封裝
  2. 繼承
  3. 多型

類別 Class

在程式語言中,類別定義一件事物的抽象特點。類別的定義包含了資料的形式(屬性, Field)以及對資料的操作(方法, Method)。我們也可以想像成類別是汽車的設計藍圖(blueprint),其中我們可以在這張藍圖定義抽象的內容(也就是屬性、方法),例如汽車的廠牌、汽車的車名以及馬力和取得汽車資訊等。

public class CarModel{
public string Brand {get;set;}
public string CarType {get;set;}
public int seat {get;set;}
public Datetime ManufactureDate{get;set;}
public string ManufactureYearStr{
get{
return ManufactureDate.Tostring("yyyy")
}
}
public Decimal Price{get;set;}
}

物件 Object

物件也就是類別的實例,也就是說有了類別這張藍圖我們可以在程式中產生許多汽車類別的資料,而這些資料彼此之間不互相影響,每一個皆是獨立的。

var MazdaM3 = new CarModel(){
Brand = "Mazda",
CarType = "Hatchback",
seat = 5,
ManufactureDate = DateTime.Parse("2020/10/10"),
Price = 990000
}

var BMWX5 =new CarModel(){
Brand = "BMW",
CarType = "SUV",
seat = 5,
ManufactureDate = DateTime.Parse("2018/10/10"),
Price = 2590000
}

封裝

即是將物件內部的資料隱藏起來,只能透過物件本身所提供的介面(interface)取得物件內部屬性或者方法,物件內部的細節資料或者邏輯則隱藏起來,其他物件即無法瞭解此物件的內部細節,若不經過允許之窗口(即此物件提供之方法)便無從更動此物件內之資料。簡白的說,對一件事情只需要理解他的外在就好,不需要了解裡面內部的構造


繼承

在某種情況下,一個類別會有「子類別」。子類別比原本的類別(稱為父類別)要更加具體化,也就是說子類別繼承了父類別。例如:計程車(子類別)繼承了汽車(父類別)原有的屬性以及方法,也新增了自己特有的屬性(driverName)。

public class CarModel{
public string Brand {get;set;}
public string CarType {get;set;}
public int seat {get;set;}
public Datetime ManufactureDate{get;set;}
public string ManufactureYearStr{
get{
return ManufactureDate.Tostring("yyyy")
}
}
public Decimal Price{get;set;}
}

public class TaxiModel : CarModel{
public string DriverName{get;set;}
public int Seniority{get;set;}
}

var ToyotaAltisTaxi = new TaxiModel (){
Brand = "Toyota",
CarType = "Hatchback",
seat = 5,
ManufactureDate = DateTime.Parse("2019/02/10"),
Price = 700000,
DriverName = "小明",
Seniority = 10
}

多型

簡單來說就是相同名稱的方法(Method),**多個相同名稱的方法,傳入不同的參數,會執行不同的敘述。**多型(Polymorphism)則包含多載(Overloading)和複寫(Overriding)。

多載(Overloading) — 是指說在相同類別中,定義名稱相同,但是參數個數不同,或是參數型態不同的函式,這樣就可以利用參數個數或者參數型態,呼叫到對應的方法。例如:一個計算面積的方法,如果傳入一個參數,就當正方形來算面積;傳入兩個參數,就當成長方形來算面積。

public int GetArea(int length){
var result = length*length;
return result;
}

public int GetArea(int hight,int width){
var result = width * hight;
return result;
}

public int GetArea(int length,float PI){
var result = length * length * PI;
return result;
}

留言
avatar-img
留言分享你的想法!
avatar-img
ChiYu Code Journey
0會員
12內容數
歡迎來到 ChiYu Code Journey!這裡是我分享技術心得與開發經驗的空間,主要內容涵蓋 C#、.Net、API 開發及雲端等程式主題。偶爾也會分享一些日常生活點滴,像是我與我家可愛的法鬥相處的趣事等。希望在這裡能和大家一起學習、交流,一同踏上這段程式旅程!
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
物件導向的SOLID原則包含:單一職責、開閉、里氏替換、介面隔離、依賴反轉 而常見設計模式有:原型、單例、工廠、抽象工廠、建造者、依賴注入 軟體設計模式的三層式架構,衍生出 MVC、MVP、MVVM 等 文章以淺顯易懂的方式說明上述概念,並搭配生活化的例子,幫助讀者理解這些設計原則和模式
Thumbnail
物件導向的SOLID原則包含:單一職責、開閉、里氏替換、介面隔離、依賴反轉 而常見設計模式有:原型、單例、工廠、抽象工廠、建造者、依賴注入 軟體設計模式的三層式架構,衍生出 MVC、MVP、MVVM 等 文章以淺顯易懂的方式說明上述概念,並搭配生活化的例子,幫助讀者理解這些設計原則和模式
Thumbnail
本文章深入探討物件導向程式設計的三大核心特性,包括封裝、多型和繼承。這些特性對於建立模組化、可擴充以及易於維護的程式架構至關重要。封裝確保資料的隱私和完整性,多型實現靈活的系統設計,繼承則促進程式碼的重用。瞭解這些概念將幫助開發者設計更高效的程式系統。
Thumbnail
本文章深入探討物件導向程式設計的三大核心特性,包括封裝、多型和繼承。這些特性對於建立模組化、可擴充以及易於維護的程式架構至關重要。封裝確保資料的隱私和完整性,多型實現靈活的系統設計,繼承則促進程式碼的重用。瞭解這些概念將幫助開發者設計更高效的程式系統。
Thumbnail
本文探討PHP中的類別、介面和抽象類別的基本概念與差異。雖然這些知識可能對初學者幫助不大,但對於資深工程師來說,理解這些概念有助於建立更加優雅的架構和維持代碼的整潔。內容涵蓋了類別的封裝、繼承、多型,及介面和Traits的使用規範,提供程式設計師在日常開發中的參考和指導。
Thumbnail
本文探討PHP中的類別、介面和抽象類別的基本概念與差異。雖然這些知識可能對初學者幫助不大,但對於資深工程師來說,理解這些概念有助於建立更加優雅的架構和維持代碼的整潔。內容涵蓋了類別的封裝、繼承、多型,及介面和Traits的使用規範,提供程式設計師在日常開發中的參考和指導。
Thumbnail
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
Thumbnail
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
Thumbnail
這篇文章介紹物件導向程式設計(OOP)的基本概念,包括類和物件的定義以及四大核心概念:封裝、繼承、多型和抽象。讀者將瞭解如何在Python中定義類和物件,並學習如何使用這些OOP特性來構建更具組織性和可維護性的程式碼。透過實例,文章探討如何將真實世界的物件模擬到程式設計中。
Thumbnail
這篇文章介紹物件導向程式設計(OOP)的基本概念,包括類和物件的定義以及四大核心概念:封裝、繼承、多型和抽象。讀者將瞭解如何在Python中定義類和物件,並學習如何使用這些OOP特性來構建更具組織性和可維護性的程式碼。透過實例,文章探討如何將真實世界的物件模擬到程式設計中。
Thumbnail
這篇文章將會講述類圖的基本介紹,並且詳細敘述從零開始製作完整的類圖流程。
Thumbnail
這篇文章將會講述類圖的基本介紹,並且詳細敘述從零開始製作完整的類圖流程。
Thumbnail
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
Thumbnail
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
Thumbnail
物件導向的概念,以python程式為範例。
Thumbnail
物件導向的概念,以python程式為範例。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News