Home [C# 筆記] 物件導向-複習-R
Post
Cancel

[C# 筆記] 物件導向-複習-R

欄位、屬性、構造函數、this、new、base

Q:Field(字段/欄位)是幹什麼的?

儲存數據用的

Q:屬性是幹什麼的?

保護Field(字段/欄位)用的

Q:構造函數是幹什麼的?

初始化對象(物件)
初始化對象(物件)說白了,就是給對象(物件)的每一個屬性去賦值。

Q:什麼時候會調用構造函數?

當我們new的時候會調用構造函數,


this 關鍵字

this 有兩個作用

  • 當前類的對象(物件)
  • 調用自己的構造函數
new 關鍵字

new 有什麼作用?

  • 創建對象。我們創建對象(物件)的時候要用new
  • 隱藏父類成員。隱藏從父類那邊繼承過來的成員。

子類的成員 跟父類成員的名稱一樣,會將父類的成員隱藏,隱藏帶來的效果是什麼?子類調不到父類的成員。如果你是故意這麼做的話,就要在返回值前面加個 new

1
2
3
4
5
6
7
8
9
10
11
12
public class Person
{
    public void T()
    {
    }
}
public class Teacher : Person
{
    public new void T() //如果故意要跟父類同名,要加new
    {
    }
}

警告CS0108 ‘Teacher.T()’ 會隱藏繼承的成員 ‘Person.T()’ 若本意即為要隱藏,請使用 new 關鍵字。

base 關鍵字

base調用父類的構造函數,在子類中調用父類重名的方法

繼承:

繼承是指類別與類別之間的關係

多型

virtual虛方法、abstract 抽象類、interface 介面

interface 介面

  • 介面存在的意義:多型。多型的意義:程序可擴展性
  • 介面解決了類別多繼承的問題
  • 介面之間可以多繼承。

物件導向

什麼是面向對象(物件導向)

  • 一種分析問題的方式(增強了程序的可擴展性)
  • 面向對象(物件導向)三大特性:封裝、繼承、多態(多型)

類和對象(類別和物件)

  • 類別:類是一個模子,確定對象將會挪有的特徵(屬性)和行為(方法)
  • 物件:對象(物件)是一個你能夠看得到、摸得著的具體實體—–萬物皆物件

什麼是類(類別)?什麼是對象(物件)?類和對象的區別?

物件 & 類別 = 大樓 & 藍圖 這個大樓是根據設計藍圖構造出來的,圖紙上有什麼東西,咱們這個大樓裡面是不是也得有什麼東西,對吧。

  • 類別算是一個藍圖、一個範本、一個可參考的文件,他沒有 實體 (Instance) 的概念,屬靜態的。
  • 物件是一個看的到、摸的到的實體,屬於動態的,狀態會隨時改變,但架構與行為不會改變。

  • 類是模具、創建對象的模具、抽象的
    • 類是一種數據類型,用戶自定義的數據類型
    • 類的組成:字段、屬性、方法、構造函數等
  • 對象是具體的,是類的具體實例。對象具有屬性(特徵)和方法(行為)
  • 類中包含了數據(用字段表示)與行為(用方法/函數/功能)表示
    • 方法為一塊具有名稱的代碼
  • this 當前對象,顯示的調用自己的構造函數
  • base 調用父類的構造函數,在子類中調用父類的重名方法

知識點總結

  • 類別對物件本身就是封裝的體現
    • 1.屬性封裝了Field(字段/欄位)、
    • 2.方法的多個參數封裝成了一個對象、
    • 3.將一堆代碼封裝到了一個小程序集中(dll、exe)。將一坨程序封裝起來到一個程序集當中
  • 繼承是指類別與類別之間的關係
  • 為什麼要繼承?繼承帶給我們的好處?代碼重用
  • LSP里氏轉換原則(聲明父類類型變量,指向子類類型對象,以及調用方法時的一些問題)、多態(多型)、類的單根繼承性、傳遞性、繼承時構造函數的問題
  • 所有的類都直接或間接的繼承自object類
  • 繼承中的訪問修飾符問題

  • [C# 筆記] C#中的訪問修飾符(存取修飾詞)
  • 存取修飾詞 (C# 參考)
This post is licensed under CC BY 4.0 by the author.