今天來重新學一次物件導向概念。
參考資料:
ITHandyGuy Tutorial
物件導向(Object Oriented Programming)概念
小山的 C# 教學-第1課-C# 是甚麼?
何謂物件導向
簡單來說就是透過物件與物件之間的互動,來完成功能就是物件導向。
而組成物件導向,最基礎的兩個元素就是Class
、Object
。Class
:就是用來定義抽象事務,可以有方法、屬性Object
: 物件就是類別的 Instance(實例)
1 | // Class 類別 |
物件導向特性
- 封裝性
- 繼承
- 多型
public protected private 三者差異
這三者差異主要在存取範圍上
- public 就是未限制存取
- protected 就是同一個 class 繼承也可以使用
1
2
3
4
5
6
7
8
9
10
11
12class car
{
protected int x = 111;
}
class B: car
{
var a = new A();
var b = new B();
b.x =11; //OK
a.x =33; //Error CS1540,因為沒有繼承!
} - private 最嚴格,只有相同類別下才能使用
1
2
3
4
5
6
7
8
9
10
11class car
{
private int x = 111;
}
class B: car
{
var a = new A();
b.x =11; //indirectly accessed due to its protection level
}
Class
- Class 就像一個藍圖,底下可以放方法、Field、屬性、建構函式 等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public class Car
{
//Field
//補充小知識:我們通常變數前面加下底面表全域,存取權限通常設定 private
private _string Title {get;set;}
private bool Answer {get;set;}
//Method方法
//必須回傳string字串
public string Run()
{
return "Success";
}
//Constructor 建構子
//只要創建Car物件時,就必須帶入這些參數
public Car(string type,string registration)
{
_type = type;
_registration = registration;
}
} 1
2
3
4
5
6
7
8
9
10private bool _Answer { get; set; }
//下面兩組 Method 組合起來就是上面簡寫
public string GetAnswer()
{
return _Answer;
}
public void SetAnswer(bool A)
{
_Answer = A;
}