• 沒有找到結果。

6.1 物件與類別 物件與類別 物件與類別 物件與類別

N/A
N/A
Protected

Academic year: 2022

Share "6.1 物件與類別 物件與類別 物件與類別 物件與類別"

Copied!
82
0
0

加載中.... (立即查看全文)

全文

(1)

6.1 物件與類別

6.2 建構函式 6.6 使用主控台程式建立視窗程式

6.3 靜態成員

6.5 類別繼承

備註:可依進度點選小節

6.4 物件陣列

(2)

傳統結構化程式設計 傳統結構化程式設計 傳統結構化程式設計 傳統結構化程式設計



對現今軟體開發技術已不敷使用對現今軟體開發技術已不敷使用對現今軟體開發技術已不敷使用對現今軟體開發技術已不敷使用。。。。 目前最流行

目前最流行 目前最流行 目前最流行







物件導向技術物件導向技術物件導向技術物件導向技術。。。。

C# 提供完整的物件導向技術如提供完整的物件導向技術如提供完整的物件導向技術如:提供完整的物件導向技術如::: C#

類別繼承 類別繼承 類別繼承

類別繼承、、、、多型多型多型多型、、、、介面介面介面介面、、、、運算子多載運算子多載運算子多載運算子多載、、、、泛型泛型泛型泛型 (類似類似類似類似C++ 樣板樣板樣板)…等機制樣板 等機制等機制等機制,,,,







 讓使用讓使用讓使用 C# 的程式設計師能大幅度減少程式撰寫讓使用 的程式設計師能大幅度減少程式撰寫的程式設計師能大幅度減少程式撰寫的程式設計師能大幅度減少程式撰寫 及增加應用程式的效能

及增加應用程式的效能及增加應用程式的效能 及增加應用程式的效能。。。。

本章主要探討物件與類別間的關係 本章主要探討物件與類別間的關係 本章主要探討物件與類別間的關係 本章主要探討物件與類別間的關係。。。。

2

(3)

6.1 物件與類別 物件與類別 物件與類別 物件與類別

6.1.1 何謂物件與類別 何謂物件與類別 何謂物件與類別 何謂物件與類別

物件 物件

物件物件(Object)

簡單的說就是一個東西 簡單的說就是一個東西 簡單的說就是一個東西

簡單的說就是一個東西,,,,物件可被識別和描述物件可被識別和描述物件可被識別和描述物件可被識別和描述、、、、 有狀態

有狀態

有狀態有狀態(屬性屬性屬性)、屬性 、、有行為、有行為有行為(方法有行為 方法方法) 。方法 。。。 有狀態

有狀態

有狀態有狀態(屬性屬性屬性)、屬性 、、有行為、有行為有行為(方法有行為 方法方法) 。方法 。。。 類別

類別

類別類別(Class)

是物件抽象的定義 是物件抽象的定義 是物件抽象的定義

是物件抽象的定義,,,,也就是說類別是定義物件的也就是說類別是定義物件的也就是說類別是定義物件的也就是說類別是定義物件的 一個藍圖

一個藍圖 一個藍圖 一個藍圖。。。。

(4)

例如 例如 例如 例如

Peter(物件物件物件物件)是一個人是一個人是一個人(類別是一個人 類別類別類別) 。。。。 Peter 物件是屬於人這種類別物件是屬於人這種類別物件是屬於人這種類別物件是屬於人這種類別。。。。 Peter的身高是的身高是的身高是的身高是164(身高的屬性身高的屬性身高的屬性身高的屬性) 。。。。 Peter會走路會走路會走路會走路(行為行為行為, 方法行為 方法方法方法) 。。。。

如用程式碼來表示 如用程式碼來表示 如用程式碼來表示

如用程式碼來表示 Peter 物件如下Peter 物件如下物件如下物件如下::::

4

(5)

比較用比較用

比較用比較用 TextBox 類別建立物件名稱為類別建立物件名稱為類別建立物件名稱為 txtId 類別建立物件名稱為 文字方塊的敘述

文字方塊的敘述 文字方塊的敘述 文字方塊的敘述::::

建立物件前必須先定義類別 建立物件前必須先定義類別 建立物件前必須先定義類別 建立物件前必須先定義類別。。。。 在

在 .NET Framework 中提供許多內建類別中提供許多內建類別中提供許多內建類別中提供許多內建類別 大幅增加應用程式開發的速度

大幅增加應用程式開發的速度 大幅增加應用程式開發的速度 大幅增加應用程式開發的速度。。。。

(6)

6.1.2 類別的定義 類別的定義 類別的定義 類別的定義

類別儲存在一個 類別儲存在一個 類別儲存在一個

類別儲存在一個*.cs類別檔類別檔類別檔。類別檔 寫法寫法

寫法寫法:

public

class 類別名稱類別名稱類別名稱 { 類別名稱 [成員存取修飾詞成員存取修飾詞成員存取修飾詞成員存取修飾詞] 欄位欄位欄位欄位

[成員存取修飾詞成員存取修飾詞成員存取修飾詞成員存取修飾詞] 欄位欄位欄位欄位 [成員存取修飾詞成員存取修飾詞成員存取修飾詞成員存取修飾詞] 屬性屬性屬性屬性 [成員存取修飾詞成員存取修飾詞成員存取修飾詞成員存取修飾詞] 方法方法方法方法 }

C# 資料成員常用的成員存取修飾詞有資料成員常用的成員存取修飾詞有資料成員常用的成員存取修飾詞有資料成員常用的成員存取修飾詞有private、、public、 、protected。

6

(7)

存取修飾詞 存取修飾詞存取修飾詞 存取修飾詞





 宣告為宣告為宣告為宣告為 private

該成員即為私有型別 該成員即為私有型別 該成員即為私有型別

該成員即為私有型別,,,表示該成員只能在自身,表示該成員只能在自身表示該成員只能在自身表示該成員只能在自身 類別內存取

類別內存取 類別內存取 類別內存取;;;;





 若宣告為若宣告為若宣告為public若宣告為

該成員即為公用型態 該成員即為公用型態 該成員即為公用型態

該成員即為公用型態,,,表示該成員的存取沒有限制,表示該成員的存取沒有限制表示該成員的存取沒有限制,表示該成員的存取沒有限制,,, 該成員即為公用型態

該成員即為公用型態 該成員即為公用型態

該成員即為公用型態,,,表示該成員的存取沒有限制,表示該成員的存取沒有限制表示該成員的存取沒有限制,表示該成員的存取沒有限制,,, 允許其它類別也可存取

允許其它類別也可存取 允許其它類別也可存取 允許其它類別也可存取;;;;





 若宣告為若宣告為若宣告為若宣告為protected 該成員即為保護型態 該成員即為保護型態 該成員即為保護型態

該成員即為保護型態,,,表示該成員能在自身類別和,表示該成員能在自身類別和表示該成員能在自身類別和表示該成員能在自身類別和 被繼承的子類別內進行存取

被繼承的子類別內進行存取 被繼承的子類別內進行存取 被繼承的子類別內進行存取。。。。

(8)

欄位 欄位欄位 欄位

用來儲存物件的資料以表示物件擁有的狀態 用來儲存物件的資料以表示物件擁有的狀態用來儲存物件的資料以表示物件擁有的狀態

用來儲存物件的資料以表示物件擁有的狀態,,,可用,可用可用可用 一般的資料型別或其他的類別來宣告

一般的資料型別或其他的類別來宣告一般的資料型別或其他的類別來宣告 一般的資料型別或其他的類別來宣告

屬性 屬性屬性 屬性

若物件欄位的值需受到限制或管理 若物件欄位的值需受到限制或管理若物件欄位的值需受到限制或管理

若物件欄位的值需受到限制或管理,,,可先將該,可先將該可先將該可先將該 欄位的值宣告為

欄位的值宣告為欄位的值宣告為

欄位的值宣告為 private,欄位的值宣告為 ,,,讓使用者透過讓使用者透過讓使用者透過 public讓使用者透過 欄位的值宣告為欄位的值宣告為

欄位的值宣告為 private,,,,讓使用者透過讓使用者透過讓使用者透過 public讓使用者透過 的的的

的「「「存取子「存取子存取子存取子」」」」來取得或設定來取得或設定來取得或設定來取得或設定 private 私有型別的私有型別的私有型別的私有型別的 欄位值

欄位值欄位值

欄位值,,,存取子是一種特殊的方法,存取子是一種特殊的方法存取子是一種特殊的方法,存取子是一種特殊的方法,,它可定義類別,它可定義類別它可定義類別它可定義類別 的唯讀或唯寫的屬性

的唯讀或唯寫的屬性的唯讀或唯寫的屬性 的唯讀或唯寫的屬性。。。。 方法方法方法

方法

可使用方法 可使用方法可使用方法

可使用方法(或稱函式或稱函式或稱函式或稱函式)來定義來定義來定義來定義,,,,用來表示一個類別用來表示一個類別用來表示一個類別用來表示一個類別 該擁有的行為

該擁有的行為該擁有的行為 該擁有的行為

8

(9)

例如定義 例如定義

例如定義例如定義 Person 類別擁有類別擁有類別擁有類別擁有 Height(身高身高身高身高)及及 Weight(體重及 體重體重體重) 的欄位及一個

的欄位及一個 的欄位及一個

的欄位及一個 Walk(走路走路走路走路)方法方法方法。方法。。。

(10)

6.1.3 物件的宣告與建立 物件的宣告與建立 物件的宣告與建立 物件的宣告與建立

定義類別後 定義類別後 定義類別後

定義類別後,,,,接著用接著用接著用接著用 new 關鍵字來建立該類別關鍵字來建立該類別關鍵字來建立該類別關鍵字來建立該類別 的物件實體

的物件實體 的物件實體 的物件實體。。。。

建立物件方法有兩種 建立物件方法有兩種 建立物件方法有兩種 建立物件方法有兩種::::

1. 方法方法方法方法1 先宣告先宣告先宣告,先宣告,,,再建立物件再建立物件再建立物件再建立物件 1. 方法方法方法方法1 先宣告先宣告先宣告,先宣告,,,再建立物件再建立物件再建立物件再建立物件

類別名稱 類別名稱 類別名稱

類別名稱 物件變數物件變數物件變數物件變數; // 宣告物件宣告物件宣告物件宣告物件

物件變數 物件變數

物件變數物件變數 = new 類別名稱類別名稱類別名稱類別名稱(); // 建立物件實體建立物件實體建立物件實體建立物件實體 2. 方法方法方法2 宣告物件同時建立物件方法 宣告物件同時建立物件宣告物件同時建立物件宣告物件同時建立物件

類別名稱 類別名稱 類別名稱

類別名稱 物件變數物件變數物件變數物件變數 = new 類別名稱類別名稱類別名稱類別名稱();

10

(11)

以 以

以6.1.2節節節節 Person 類別為例類別為例類別為例類別為例,,,,產生產生產生產生Person 類別的類別的類別的類別的

Peter 物件實體物件實體物件實體物件實體。。。當建立物件時。當建立物件時當建立物件時當建立物件時,,,,該類別中的成員該類別中的成員該類別中的成員該類別中的成員 即屬於該物件所擁有

即屬於該物件所擁有 即屬於該物件所擁有

即屬於該物件所擁有,,,若要存取類別的,若要存取類別的若要存取類別的若要存取類別的 public

成員可用成員可用

成員可用成員可用「「「.」「 」」」運算子來達成運算子來達成運算子來達成運算子來達成。。。。寫法寫法寫法寫法::::

(12)

當建立不同物件時 當建立不同物件時 當建立不同物件時

當建立不同物件時,,,,每個物件都視為不同的執行個體每個物件都視為不同的執行個體每個物件都視為不同的執行個體每個物件都視為不同的執行個體,,,, 且每個物件都會擁有類別所定義的成員

且每個物件都會擁有類別所定義的成員 且每個物件都會擁有類別所定義的成員 且每個物件都會擁有類別所定義的成員。。。。

【結論結論結論結論】】】】 物件 物件 物件

物件才是才是才是類別才是類別類別類別的的的的執行個體執行個體執行個體執行個體 ,,,, 物件

物件 物件

物件才是才是才是類別才是類別類別類別的的的的執行個體執行個體執行個體執行個體 ,,,, 而

而 而

而類別類別類別類別是是是定義物件是定義物件定義物件的定義物件的的藍圖的藍圖藍圖。藍圖。。。

12

(13)

在 在 在

FirstClass.sln 專案新增專案新增專案新增專案新增 Product.cs 類別檔類別檔,類別檔類別檔,,,Product

產品類別有 產品類別有 產品類別有

產品類別有 PartNo 編號編號編號, 編號 PartName 品名品名, 品名品名 Qty 數量三個數量三個數量三個數量三個 欄位成員

欄位成員 欄位成員

欄位成員;;;以及定義;以及定義以及定義以及定義 ShowInfo()方法用來顯示該項產品方法用來顯示該項產品方法用來顯示該項產品方法用來顯示該項產品 的編號的編號

的編號的編號, 品名品名品名, 數量等資訊品名 數量等資訊數量等資訊。數量等資訊。。。 最後在

最後在 最後在

最後在Program.cs 的的的的 Main() 方法使用方法使用方法使用方法使用 Proudct 產品類別產品類別產品類別產品類別 建立兩個產品物件

建立兩個產品物件 建立兩個產品物件 建立兩個產品物件。。。。 建立兩個產品物件 建立兩個產品物件 建立兩個產品物件 建立兩個產品物件。。。。

(14)

Step1 新增專案新增專案新增專案新增專案 新增

新增 新增

新增「「「「主控台應用程式主控台應用程式主控台應用程式」主控台應用程式」」專案」專案專案,專案,,專案名稱為,專案名稱為專案名稱為FirstClass。專案名稱為 。。。 Step2 在專案中新增類別檔在專案中新增類別檔在專案中新增類別檔在專案中新增類別檔

執行功能表 執行功能表 執行功能表

執行功能表【【【專案【專案專案(P)/加入類別專案 加入類別加入類別(C)…】加入類別 】】出現下圖】出現下圖出現下圖出現下圖

上機

14

(15)
(16)

Step3 定義定義定義定義 Product 類別類別類別類別 在

在在

在Product.cs程式碼中先定義程式碼中先定義程式碼中先定義 Proudct 類別擁程式碼中先定義 類別擁類別擁類別擁 有

有有

有PartNo 編號編號編號, PartName 品名編號 品名品名, Qty 數量欄位品名 數量欄位數量欄位,數量欄位,,, 以及可顯示產品編號

以及可顯示產品編號以及可顯示產品編號

以及可顯示產品編號, 品名品名品名品名, 數量的數量的數量的數量的ShowInfo()方方方方 法法法

法。。。。 上述 上述上述

上述 Product 類別中的成員因是類別中的成員因是類別中的成員因是類別中的成員因是 public,,,,所以所以所以所以 可讓物件直接以

可讓物件直接以可讓物件直接以

可讓物件直接以「可讓物件直接以「「「.」」」」運算子來存取這些欄位運算子來存取這些欄位運算子來存取這些欄位運算子來存取這些欄位。。。。 可讓物件直接以可讓物件直接以

可讓物件直接以「「「「.」」」」運算子來存取這些欄位運算子來存取這些欄位運算子來存取這些欄位運算子來存取這些欄位。。。。

16

(17)

// FileName : Product.cs 01 using System;

02 using System.Collections.Generic;

03 using System.Linq;

04 using System.Text;

05

06 namespace FirstClass 07 {

08 class Product 09 {

10 // public PartNo , PartName

10 //宣告宣告宣告public 公用型的宣告 公用型的公用型的公用型的PartNo編號編號編號編號, PartName品名欄位品名欄位品名欄位品名欄位 11 public string PartNo, PartName;

12 public int Qty;

13 public void ShowInfo() 14 {

15 Console.WriteLine("編號編號編號:編號:{0}", PartNo);

16 Console.WriteLine("品名品名品名:品名:{0}", PartName);

17 Console.WriteLine("數量數量數量:數量:{0}", Qty);

18 Console.WriteLine("============================");

19 } 20 } 21 }

(18)

Step4 撰寫撰寫撰寫撰寫 Main() 方法方法方法方法 切換到

切換到切換到

切換到 Program.cs 類別檔類別檔,類別檔類別檔,,,在該檔中撰寫如下程式在該檔中撰寫如下程式在該檔中撰寫如下程式在該檔中撰寫如下程式。。。。 在在在

Main() 方法可用方法可用方法可用方法可用 new 關鍵字來建立屬於關鍵字來建立屬於關鍵字來建立屬於關鍵字來建立屬於 Proudct

類別的物件 類別的物件類別的物件

類別的物件,,,如要存取類別中的成員,如要存取類別中的成員如要存取類別中的成員,如要存取類別中的成員,,可用,可用可用「可用「「.」「 」」」運算子運算子運算子運算子。。。。

18

(19)

// FileName : Program.cs 01 namespace FirstClass 02 {

03 class Program 04 {

05 static void Main(string[] args) 06 {

07 //宣告並建立宣告並建立宣告並建立宣告並建立DVD物件屬於物件屬於物件屬於物件屬於Product類別類別類別類別 08 Product DVD = new Product();

09 DVD.PartNo = "B001";

10 DVD.PartName = "變形金剛變形金剛變形金剛2";變形金剛 10 DVD.PartName = "變形金剛變形金剛變形金剛2";變形金剛 11 DVD.Qty = 20;

12 DVD.ShowInfo();

13 Product PDA;

14 PDA = new Product();

15 PDA.PartNo = "P001";

16 PDA.PartName = "惠普惠普惠普HP iPAQ PDA行動手機惠普 行動手機行動手機行動手機";

17 PDA.Qty = -5;

18 PDA.ShowInfo();

19 Console.Read();

20 } 21 } 22 }

(20)

6.1.4 使用存取子設定屬性 使用存取子設定屬性 使用存取子設定屬性 使用存取子設定屬性

使用 使用

使用使用public 欄位來表示物件的狀態或屬性非欄位來表示物件的狀態或屬性非欄位來表示物件的狀態或屬性非欄位來表示物件的狀態或屬性非常常常方常方方便方便便便 如

如 如

如果果果果物件的屬性狀態需受到控管或限制就必須用物件的屬性狀態需受到控管或限制就必須用物件的屬性狀態需受到控管或限制就必須用物件的屬性狀態需受到控管或限制就必須用存取子存取子存取子存取子。。。。 前前

前前範範範例範例例第例第第第17行行行行 PDA.Qty=-5; ,,,, 將

將PDA產品的數量設為產品的數量設為產品的數量設為產品的數量設為-5。。。。 若若

若若希望希望希望 Qty 欄位值最希望 欄位值最欄位值最欄位值最小小小小不能少於不能少於不能少於不能少於0,,,,想想想想將類別欄位值將類別欄位值將類別欄位值將類別欄位值 若若

若若希望希望希望 Qty 欄位值最希望 欄位值最欄位值最欄位值最小小小小不能少於不能少於不能少於不能少於0,,,,想想想想將類別欄位值將類別欄位值將類別欄位值將類別欄位值 定義在

定義在 定義在

定義在某範圍某範圍某範圍某範圍內內內內,,,,可用可用可用可用「「「「存取子存取子存取子存取子」」」」來達成來達成來達成來達成。。。。 存取子是一種特殊方法

存取子是一種特殊方法 存取子是一種特殊方法

存取子是一種特殊方法,,,,它有它有它有它有 get 存取子和存取子和存取子和存取子和 set 存取子存取子存取子存取子 兩個

兩個 兩個

兩個區區區區塊塊塊塊。。。。

get {…} 用來傳用來傳用來傳用來傳回回回回私有欄位值私有欄位值私有欄位值私有欄位值。。。。

set{…} 用來設定類別私有欄位值用來設定類別私有欄位值用來設定類別私有欄位值用來設定類別私有欄位值。。。。 若要限制若要限制

若要限制若要限制某某某某個欄位值的個欄位值的個欄位值的個欄位值的範圍範圍範圍範圍,,,,可將可將可將可將條條條條件件件件規則規則規則規則的敘述的敘述的敘述的敘述 寫在寫在

寫在寫在set{…} 區區區區塊塊塊。塊。。。 20

(21)

存取子語法如下 存取子語法如下 存取子語法如下 存取子語法如下: : : :

public 資料型別資料型別資料型別 屬性名稱資料型別 屬性名稱屬性名稱屬性名稱 {

get

{

return 傳回值傳回值傳回值傳回值;

}

set

{ //設定的屬性值會傳給設定的屬性值會傳給設定的屬性值會傳給設定的屬性值會傳給value,,value會放入會放入會放入set區塊會放入 區塊區塊區塊

[程式區塊程式區塊程式區塊程式區塊;]

} }

(22)

// FileName : Product.cs 01 namespace Property 02 {

03 class Product {

05 public string PartNo, PartName;

06 private int _Qty;

07 // 設定數量設定數量設定數量設定數量Qty屬性不可小於屬性不可小於屬性不可小於0, 若小於屬性不可小於 若小於若小於0則設定若小於 則設定則設定則設定_Qty欄位為欄位為欄位為欄位為0 08 public int Qty {

10 get {

12 return _Qty;

13 } 13 } 14 set {

16 if (value < 0) value = 0;

17 _Qty = value;

18 } 19 }

20 public void ShowInfo() {

22 Console.WriteLine("編號編號編號:編號:{0}", PartNo);

23 Console.WriteLine("品名品名品名:品名:{0}", PartName);

24 Console.WriteLine("數量數量數量:數量:{0}", Qty);

25 Console.WriteLine("============================");

26 } 27 }

28 } 22

(23)

// FileName : Program.cs 01 namespace Property 02 {

03 class Program 04 {

05 static void Main(string[] args) 06 {

07 //宣告並建立宣告並建立宣告並建立宣告並建立DVD物件屬於物件屬於物件屬於物件屬於Product類別類別類別類別 08 Product DVD = new Product();

09 DVD.PartNo = "B001";

10 DVD.PartName = "變形金剛變形金剛變形金剛2";變形金剛 10 DVD.PartName = "變形金剛變形金剛變形金剛2";變形金剛 11 DVD.Qty = 20;

12 DVD.ShowInfo();

13 Product PDA;

14 PDA = new Product();

15 PDA.PartNo = "P001";

16 PDA.PartName = "惠普惠普惠普HP iPAQ PDA行動手機惠普 行動手機行動手機行動手機";

17 PDA.Qty = -5;

18 PDA.ShowInfo();

19 Console.Read();

20 } 21 } 22 }

(24)

6.1.5 唯讀與唯寫屬性 唯讀與唯寫屬性 唯讀與唯寫屬性 唯讀與唯寫屬性

設定唯讀屬性 設定唯讀屬性 設定唯讀屬性

設定唯讀屬性做做做做法法法法::::

讓設定屬性的存取子只有 讓設定屬性的存取子只有 讓設定屬性的存取子只有

讓設定屬性的存取子只有get {…} 區區區區塊塊塊塊,,,表示該屬,表示該屬表示該屬表示該屬 性只能傳性只能傳

性只能傳性只能傳回回回回值而不能設定值值而不能設定值值而不能設定值值而不能設定值;;;;

若是唯寫屬性就是讓存取子中只有 若是唯寫屬性就是讓存取子中只有 若是唯寫屬性就是讓存取子中只有

若是唯寫屬性就是讓存取子中只有set {…} 區區區區塊塊塊,塊,,, 表該屬性只能設定值而不能傳

表該屬性只能設定值而不能傳 表該屬性只能設定值而不能傳

表該屬性只能設定值而不能傳回回回回值值值值。。。。 表該屬性只能設定值而不能傳

表該屬性只能設定值而不能傳 表該屬性只能設定值而不能傳

表該屬性只能設定值而不能傳回回回回值值值值。。。。 唯讀屬性與唯寫屬性的寫法如下

唯讀屬性與唯寫屬性的寫法如下 唯讀屬性與唯寫屬性的寫法如下 唯讀屬性與唯寫屬性的寫法如下::::

唯寫屬性 唯寫屬性 唯寫屬性 唯寫屬性

public 資料型別資料型別資料型別 屬性名稱資料型別 屬性名稱屬性名稱屬性名稱 {

set {

[程式區塊程式區塊程式區塊程式區塊;]

} } 唯讀屬性

唯讀屬性 唯讀屬性 唯讀屬性

public 資料型別資料型別資料型別 屬性名稱資料型別 屬性名稱屬性名稱屬性名稱 {

get {

return ; }

} 24

(25)

6.1.6自動實作屬性 自動實作屬性 自動實作屬性 自動實作屬性

由 由

由由上例上例上例上例知知知知,,,,屬性能讓類別屬性能讓類別屬性能讓類別屬性能讓類別隱藏隱藏隱藏隱藏實實實實作作作作或或或或驗證驗證驗證驗證程式碼程式碼程式碼程式碼 同時

同時 同時

同時,,,,以公開方式取得以公開方式取得以公開方式取得以公開方式取得並並並並設定值設定值設定值設定值。。。。 類別的屬性

類別的屬性 類別的屬性

類別的屬性還還還還能能能能繫繫繫繫結結結結至至至至控制項的屬性控制項的屬性控制項的屬性控制項的屬性,,,,這是欄位這是欄位這是欄位這是欄位 所

所 所

所做做做做不到的不到的不到的不到的。。。。 建

建 建

建議議議議將類別的公開欄位修將類別的公開欄位修將類別的公開欄位修將類別的公開欄位修改改改改成屬性成屬性成屬性成屬性。。。。 建

建 建

建議議議議將類別的公開欄位修將類別的公開欄位修將類別的公開欄位修將類別的公開欄位修改改改改成屬性成屬性成屬性成屬性。。。。 若將上例的

若將上例的 若將上例的

若將上例的 PartNo 編號及編號及編號及編號及 PartName 品名公開品名公開品名公開品名公開 欄位

欄位 欄位

欄位改改改改成以屬性表示成以屬性表示成以屬性表示成以屬性表示 在

在 在

在早期早期早期早期 C# (C# .NET, C# 2005) 版版版版本需用存取子本需用存取子本需用存取子本需用存取子 分

分分別定義別定義別定義別定義 PartNo 屬性及屬性及屬性及屬性及 PartName 屬性的屬性的屬性的屬性的 set 和和

和 get 區區區塊來存取區塊來存取塊來存取 _PartNo 和塊來存取 和和 _PartName 私有和 私有私有私有 欄位

欄位 欄位 欄位。。。。

(26)

26

(27)

當屬性一多上式必須 當屬性一多上式必須 當屬性一多上式必須

當屬性一多上式必須逐逐逐逐一定義屬性存取子一定義屬性存取子一定義屬性存取子一定義屬性存取子。。。。

C# 2008 開開開開始始始提供始提供提供「提供「「「自自自自動動動動實實實實作作作作屬性屬性屬性屬性」」」」來來來來解決解決解決解決這個這個這個這個問題問題問題問題。。。。 透過自

透過自 透過自

透過自動動動動屬性實屬性實屬性實屬性實作作作作讓讓讓讓 屬性宣告

屬性宣告 屬性宣告

屬性宣告更更更更簡簡簡簡明明明明,,,,存取子不需存取子不需存取子不需存取子不需額外邏輯額外邏輯額外邏輯額外邏輯或重或重或重或重複複複複撰寫程式撰寫程式撰寫程式撰寫程式。。。。 上例

上例 上例

上例改改改以自改以自以自以自動動動動實實實實作作作作屬性方式來定義屬性方式來定義屬性方式來定義屬性方式來定義 PartName 及及及及

PartNo 屬性屬性屬性屬性 此此

此此時編時編時編譯器時編譯器譯器譯器會自會自會自會自動動動動建立私有建立私有建立私有建立私有 (Private) 匿匿匿匿名名名支援名支援支援欄位支援欄位欄位欄位,,,, 此此

此此時編時編時編譯器時編譯器譯器譯器會自會自會自會自動動動動建立私有建立私有建立私有建立私有 (Private) 匿匿匿匿名名名支援名支援支援欄位支援欄位欄位欄位,,,, 讓該屬性只能透過存取子的

讓該屬性只能透過存取子的 讓該屬性只能透過存取子的

讓該屬性只能透過存取子的 get 和和和和 set 區區塊來進行存取區區塊來進行存取塊來進行存取塊來進行存取。。。。

(28)

6.2 建構函式 建構函式 建構函式 建構函式

6.2.1 建構函式的使用 建構函式的使用 建構函式的使用 建構函式的使用

前例都先建立物件 前例都先建立物件 前例都先建立物件

前例都先建立物件,,,,再再再再逐逐逐逐一設定該物件的屬性或欄位一設定該物件的屬性或欄位一設定該物件的屬性或欄位一設定該物件的屬性或欄位。。。。 若若

若若想想想想在建立物件同時完成物件屬性或欄位在建立物件同時完成物件屬性或欄位在建立物件同時完成物件屬性或欄位在建立物件同時完成物件屬性或欄位初始初始初始初始值設定值設定值設定值設定 若若

若若想想想想在建立物件同時完成物件屬性或欄位在建立物件同時完成物件屬性或欄位在建立物件同時完成物件屬性或欄位在建立物件同時完成物件屬性或欄位初始初始初始初始值設定值設定值設定值設定



 用建構函式來達成用建構函式來達成用建構函式來達成。用建構函式來達成。。。

C# 中建構函式名稱必須和類別名稱中建構函式名稱必須和類別名稱中建構函式名稱必須和類別名稱中建構函式名稱必須和類別名稱相相相同相同同,同,,建構函式,建構函式建構函式建構函式 的使用方式和一般函式

的使用方式和一般函式的使用方式和一般函式

的使用方式和一般函式(方法方法方法)相方法 相相同相同同,同,,當使用,當使用當使用 new 關鍵當使用 關鍵關鍵關鍵 字建立物件同時即會執行該類別中的建構函式

字建立物件同時即會執行該類別中的建構函式字建立物件同時即會執行該類別中的建構函式 字建立物件同時即會執行該類別中的建構函式。。。。

28

(29)

延續 延續

延續延續上例在上例在上例在上例在 Product 類別中新增一個可傳入編號類別中新增一個可傳入編號類別中新增一個可傳入編號類別中新增一個可傳入編號, 品名品名品名,品名 數量三個

數量三個 數量三個

數量三個參參參數的建構函式參數的建構函式數的建構函式,數的建構函式,,讓使用者可用,讓使用者可用讓使用者可用讓使用者可用

Product DVD = new Product (“B001”, “變形金剛變形金剛變形金剛變形金剛2”, 15);

在建立 在建立

在建立在建立 Product 類別的類別的類別的類別的 DVD 物件同時即物件同時即物件同時即物件同時即指指指定指定定定PartNo, PartName 以及以及 Qty 屬性的以及以及 屬性的屬性的初屬性的初初初值值值值。。。。

PartName 以及以及 Qty 屬性的以及以及 屬性的屬性的初屬性的初初初值值值值。。。。

(30)

Step1新增專案新增專案新增專案新增專案 新增

新增 新增

新增「「「「主控台應用程式主控台應用程式主控台應用程式」主控台應用程式」」專案」專案專案,專案,,名稱為,名稱為名稱為名稱為 Constructor。。。。 Step2 建立建立建立建立Product 類別類別類別類別



 執行功能表執行功能表執行功能表【執行功能表【【專案【專案專案專案(P)/加入類別加入類別加入類別加入類別(C)…】出現出現出現出現

「「

「加入新項目加入新項目加入新項目加入新項目」」」視」視視窗視窗窗。窗。。。

上機

「「

「加入新項目加入新項目加入新項目加入新項目」」」視」視視窗視窗窗。窗。。。







 選選選取選取取取「「「「類別類別類別類別」」」選」選選項選項項,項,,再將,再將再將「再將「「名稱「名稱名稱名稱(N)」」」」設為設為設為設為

Product.cs (類別檔案名稱設為類別檔案名稱設為類別檔案名稱設為類別檔案名稱設為Product.cs)







 按按按按 鈕鈕鈕鈕開開開開啟啟啟啟 Product.cs 檔檔檔檔。。。。







 在在在在 Product.cs 撰寫下面程式碼撰寫下面程式碼撰寫下面程式碼撰寫下面程式碼

30

(31)

// FileName : Product.cs 01 namespace Constructor 02 {

03 class Product 04 {

05 public string PartNo { get; set; } 06 public string PartName { get; set; } 07 private int _Qty;

08 // --- 08 // --- 09 public Product(string vNo, string vName, int vQty)

10 {

11 PartNo = vNo;

12 PartName = vName;

13 Qty = vQty;

14 }

(32)

15 // 設定庫存設定庫存設定庫存設定庫存Qty屬性不可小於屬性不可小於屬性不可小於屬性不可小於0, 若小於若小於若小於若小於0則設定則設定則設定則設定_Qty欄位為欄位為欄位為欄位為0 16 public int Qty

17 {

18 get 19 {

20 return _Qty;

21 } 22 set 23 {

24 if (value < 0) value = 0;

25 _Qty = value;

25 _Qty = value;

26 } 27 }

28 public void ShowInfo() 29 {

30 Console.WriteLine("編號編號編號:編號:{0}", PartNo);

31 Console.WriteLine("品名品名品名:品名:{0}", PartName);

32 Console.WriteLine("數量數量數量:數量:{0}", Qty);

33 Console.WriteLine("============================");

34 } 35 } 36 }

32

(33)

Step3 撰寫撰寫撰寫撰寫Main()方法方法方法方法

// FileName : Program.cs 01 namespace Constructor 02 {

03 class Program 04 {

05 static void Main(string[] args) 06 {

06 {

07 // Product cpu = new Product(); 無法使用無法使用無法使用無法使用 08 // 使用建構函式建立物件時並給予初值使用建構函式建立物件時並給予初值使用建構函式建立物件時並給予初值使用建構函式建立物件時並給予初值

09 Product cpu = new Product("B001", "變形金剛變形金剛變形金剛變形金剛2", 15);

10 cpu.ShowInfo();

11 Console.Read();

12 } 13 } 14 }

(34)

6.2.2 建構函式的多載 建構函式的多載 建構函式的多載 建構函式的多載

若若

若若希望希望希望希望在建構物件同時在建構物件同時在建構物件同時在建構物件同時,,,,也能也能也能也能呼叫呼叫呼叫呼叫不不不不帶引帶引帶引帶引數或數或數或數或帶引帶引帶引帶引數數數數 的建構函式

的建構函式 的建構函式

的建構函式,,,,必須使用建構函式的多載必須使用建構函式的多載必須使用建構函式的多載必須使用建構函式的多載。。。。 可定義建構函式

可定義建構函式 可定義建構函式

可定義建構函式,,,,並並並並以不同的以不同的以不同的以不同的引引引引數個數數個數數個數數個數,,,,不同不同不同不同引引引引數數數數 的資料型別來加以

的資料型別來加以 的資料型別來加以

的資料型別來加以區隔區隔區隔區隔不同的建構函式不同的建構函式不同的建構函式不同的建構函式。。。。 的資料型別來加以

的資料型別來加以 的資料型別來加以

的資料型別來加以區隔區隔區隔區隔不同的建構函式不同的建構函式不同的建構函式不同的建構函式。。。。 建構函式多載和一般的方法多載

建構函式多載和一般的方法多載 建構函式多載和一般的方法多載

建構函式多載和一般的方法多載(函式多載函式多載函式多載)使用方式函式多載 使用方式使用方式使用方式 相

相相同同同同。。。。

34

(35)

延續 延續

延續延續上例在上例在上例在上例在 Product 類別中再新增一個不類別中再新增一個不類別中再新增一個不類別中再新增一個不帶引帶引帶引帶引數數數數 的建構函式

的建構函式 的建構函式

的建構函式,,,,當使用者使用當使用者使用當使用者使用當使用者使用

Product

物件名稱物件名稱物件名稱物件名稱 =

new Proudct();

呼叫 呼叫

呼叫呼叫不不不帶引不帶引帶引數的帶引數的數的數的Product() 建構函式時建構函式時建構函式時建構函式時,,,,不不不不帶引帶引帶引帶引數的數的數的數的

Product() 建構函式會將建構函式會將 ”建構函式會將建構函式會將 ””送審”送審送審中送審中中中””””、、、、 ””””品名品名品名未品名未未未定定定定””””、、、、

Product() 建構函式會將建構函式會將 ”建構函式會將建構函式會將 ””送審”送審送審中送審中中中””””、、、、 ””””品名品名品名未品名未未未定定定定””””、、、、 0 指指指指定定定定給給給給 Product 類別的類別的類別的類別的 PartNo,

PartName, Qty 屬性屬性。屬性屬性。。。最後再加入最後再加入最後再加入最後再加入

ShowInfo()方法多載方法多載(函式多載方法多載方法多載 函式多載函式多載),函式多載 ,,, 透過

透過 透過

透過此此此方法可設定此方法可設定方法可設定方法可設定PartNo, PartName, Qty並並並並顯示產品資訊顯示產品資訊顯示產品資訊顯示產品資訊。。。。

(36)

Step1 新增專案新增專案新增專案新增專案

新增主控台應用程式專案 新增主控台應用程式專案 新增主控台應用程式專案

新增主控台應用程式專案,,,名稱設為,名稱設為名稱設為名稱設為 OverLoads。。。。 Step2 建立建立建立建立 Product 類別類別類別類別







 執行功能表的執行功能表的執行功能表的執行功能表的【【【專案【專案專案(P)/加入類別專案 加入類別加入類別(C)…】加入類別 】】指令】指令指令指令

上機







 執行功能表的執行功能表的執行功能表的執行功能表的【【【專案【專案專案(P)/加入類別專案 加入類別加入類別(C)…】加入類別 】】指令】指令指令指令 新增新增

新增新增 Product.cs 類別檔類別檔類別檔。類別檔。。。





 在在在在 Product.cs 撰寫下面程式碼撰寫下面程式碼撰寫下面程式碼撰寫下面程式碼

36

(37)

// FileName : Product.cs 01 namespace OverLoads 02 {

03 class Product 04 {

05 public string PartNo{get;set;}

06 public string PartName { get; set; } 06 public string PartName { get; set; } 07 private int _Qty;

08 public Product() 09 {

10 PartNo = "送審中送審中送審中";送審中

11 PartName = "品名未定品名未定品名未定品名未定";

12 Qty = 0;

13 }

(38)

14 public Product(string vNo, string vName, int vQty) 15 {

16 PartNo = vNo;

17 PartName = vName;

18 Qty = vQty;

19 }

20 // 設定庫存設定庫存設定庫存設定庫存Qty屬性不可小於屬性不可小於屬性不可小於0, 若小於屬性不可小於 若小於若小於若小於0則設定則設定則設定_Qty欄位為則設定 欄位為欄位為0欄位為 21 public int Qty

22 { 22 {

23 get 24 {

25 return _Qty;

26 } 27 set 28 {

29 if (value <= 0) value = 0;

30 _Qty = value;

31 } 32 }

38

(39)

33 //此此ShowInfo()多載方法可顯示產品資訊多載方法可顯示產品資訊多載方法可顯示產品資訊多載方法可顯示產品資訊 34 public void ShowInfo()

35 {

36 Console.WriteLine("編號編號編號編號::{0}", PartNo);

37 Console.WriteLine("品名品名品名品名::{0}", PartName);

38 Console.WriteLine("數量數量數量數量::{0}", Qty);

39 Console.WriteLine("============================");

40 }

41 //此此ShowInfo()多載方法可設定產品的編號多載方法可設定產品的編號多載方法可設定產品的編號多載方法可設定產品的編號, 品名品名品名品名, 數量數量數量數量,,並同時顯示資品資訊並同時顯示資品資訊並同時顯示資品資訊並同時顯示資品資訊 41 //此此ShowInfo()多載方法可設定產品的編號多載方法可設定產品的編號多載方法可設定產品的編號多載方法可設定產品的編號, 品名品名品名品名, 數量數量數量數量,,並同時顯示資品資訊並同時顯示資品資訊並同時顯示資品資訊並同時顯示資品資訊 42 public void ShowInfo(string vNo, string vName, int vQty)

43 {

44 PartNo = vNo;

45 PartName = vName;

46 Qty = vQty;

47 ShowInfo();

48 } 49 } 50 }

(40)

Step3撰寫撰寫撰寫撰寫 Main() 方法方法方法方法

// FileName : Program.cs 01 namespace OverLoads 02 {

03 class Program 04 {

05 static void Main(string[] args) 06 {

07 Product Game = new Product(); //無參數之建構函式無參數之建構函式無參數之建構函式無參數之建構函式 07 Product Game = new Product(); //無參數之建構函式無參數之建構函式無參數之建構函式無參數之建構函式 08 Game.ShowInfo();

09 Console.WriteLine("送審中的品名更新後送審中的品名更新後送審中的品名更新後送審中的品名更新後...");

10 Game.ShowInfo("G001", "火影忍者火影忍者火影忍者火影忍者-伴伴", 10);

11 //使用此建構函式建立物件時並給予編號使用此建構函式建立物件時並給予編號使用此建構函式建立物件時並給予編號,品名使用此建構函式建立物件時並給予編號 品名品名品名,數量的初值數量的初值數量的初值數量的初值 12 Product DVD = new Product("B001", "變形金剛變形金剛變形金剛2", 15);變形金剛 13 DVD.ShowInfo();

14 Console.Read();

15 } 16 } 17 }

40

(41)

6.2.3 物件初始設定式 物件初始設定式 物件初始設定式 物件初始設定式

當使用 當使用當使用

當使用 new 建立物件建立物件建立物件建立物件,,,此,此此時會此時會時會呼叫指時會呼叫指呼叫指定的呼叫指定的定的定的 多載建構函式

多載建構函式多載建構函式 多載建構函式 若

若若

若初始初始初始化物件的屬性初始化物件的屬性化物件的屬性很化物件的屬性很很多很多多,多,,要定義多個多載,要定義多個多載要定義多個多載要定義多個多載 建構函式建構函式建構函式

建構函式。。。。 如

如如

如::::Employee 員員員員工工工工類別類別類別含類別含含含有有有有::::

EmpID 編號編號、編號編號、、、EmpName 姓姓名姓姓名名、名、、、EmpTel 電話電話電話電話、、、、

EmpAdd 住址住址住址住址以及以及以及以及 EmpSalary 薪水薪水薪水薪水屬性屬性屬性屬性 希望希望希望

希望建立物件同時可建立物件同時可建立物件同時可建立物件同時可初始初始初始初始化員化員化員化員工工工工物件物件物件物件0~5個個個個 屬性內屬性內屬性內

屬性內容容容容,,,,最少要定義下面最少要定義下面最少要定義下面最少要定義下面六六六六個個個個 Employee

建構函式 建構函式建構函式

建構函式,,,且在,且在且在初始且在初始初始化物件屬性內初始化物件屬性內化物件屬性內容化物件屬性內容容會變得容會變得會變得會變得 非

非非

非常麻煩常麻煩常麻煩。常麻煩。。。

(42)

42

(43)

簡例示 簡例示 簡例示

簡例示範範範範如如如如何何何何使用物件使用物件使用物件使用物件初始初始初始初始設定式來設定式來設定式來設定式來初始初始初始初始化化化化 Employee 類別物件的類別物件的類別物件的類別物件的

- EmpID編號編號編號編號

- EmpName姓姓姓名姓名名名 - EmpTel電話電話電話電話 - EmpAdd住址住址住址住址 - EmpAdd

- EmpSalary薪薪薪薪資資資資 的內的內

的內的內容容容,容,,,完完完完全全全全不需用類別建構函式來不需用類別建構函式來不需用類別建構函式來不需用類別建構函式來初始初始初始初始化物件的化物件的化物件的化物件的 屬性值

屬性值 屬性值 屬性值。。。。

(44)

44

(45)

將上面簡例寫成一個完整的範例 將上面簡例寫成一個完整的範例將上面簡例寫成一個完整的範例

將上面簡例寫成一個完整的範例,,並練習使用並練習使用並練習使用「並練習使用「物件初始設定式物件初始設定式物件初始設定式」物件初始設定式」的 宣告方式來初始化物件的屬性值

宣告方式來初始化物件的屬性值宣告方式來初始化物件的屬性值 宣告方式來初始化物件的屬性值。 定義定義定義

定義Employee員工類別擁有員工類別擁有員工類別擁有員工類別擁有EmpID編號編號編號、編號、EmpName姓名 姓名姓名、姓名

EmpTel電話電話電話電話、、EmpAdd住址欄位以及住址欄位以及住址欄位以及EmpSalary薪水屬性住址欄位以及 薪水屬性薪水屬性,薪水屬性,並定義並定義並定義並定義 EmpSalary屬性的值不可小於屬性的值不可小於屬性的值不可小於屬性的值不可小於20000;;定義定義定義ShowInfo()方法用來顯示定義 方法用來顯示方法用來顯示方法用來顯示 員工的所有資訊

員工的所有資訊員工的所有資訊 員工的所有資訊。

Main() MoMo( )

最後在 最後在最後在

最後在Main()方法使用物件初始設定式來初始化方法使用物件初始設定式來初始化方法使用物件初始設定式來初始化方法使用物件初始設定式來初始化MoMo(莫莫莫莫莫莫)及莫莫 Dora(朵拉朵拉朵拉朵拉)兩個員工物件兩個員工物件兩個員工物件兩個員工物件,,最後再將這兩位員工的資料顯示出來最後再將這兩位員工的資料顯示出來最後再將這兩位員工的資料顯示出來最後再將這兩位員工的資料顯示出來。

(46)

Step1新增專案新增專案新增專案新增專案

新增主控台應用程式專案 新增主控台應用程式專案 新增主控台應用程式專案

新增主控台應用程式專案,,,名稱設為,名稱設為名稱設為名稱設為ObjectSetValue。。。。 Step2 建立建立建立建立

Employee

類別類別類別類別

執行功能表的 執行功能表的 執行功能表的

執行功能表的【【【專案【專案專案(專案 P)/加入類別加入類別加入類別(加入類別 C)…】】】指令】指令指令新增指令新增新增新增

上機

執行功能表的 執行功能表的 執行功能表的

執行功能表的【【【專案【專案專案(專案 P)/加入類別加入類別加入類別(加入類別 C)…】】】指令】指令指令新增指令新增新增新增

Employee.cs」」類別檔」」類別檔類別檔。類別檔。。。 在

在 在

Employee.cs 撰寫下撰寫下列撰寫下撰寫下列列列程式碼程式碼程式碼程式碼::::

46

(47)

// FileName : Employee.cs

01 namespace ObjectSetValue 02 {

03 class Employee 04 {

05 public string EmpID { set; get; } 06 public string EmpName { set; get; } 07 public string EmpTel { set; get; } 08 public string EmpAdd { set; get; } 08 public string EmpAdd { set; get; } 09 private int _Salary;

10 public int EmpSalary 11 {

12 get 13 {

14 return _Salary;

15 }

(48)

16 set 17 {

18 if (value <= 20000) value = 20000;

19 _Salary = value;

20 } 21 }

22 //顯示員工資訊顯示員工資訊顯示員工資訊顯示員工資訊

23 public void ShowInfo() 24 {

24 {

25 Console.WriteLine("編號編號編號編號::{0}", EmpID); 26 Console.WriteLine("姓名姓名姓名姓名::{0}", EmpName); 27 Console.WriteLine("電話電話電話電話::{0}", EmpTel); 28 Console.WriteLine("住址住址住址住址::{0}", EmpAdd);

29 Console.WriteLine("薪資薪資薪資薪資::{0}", EmpSalary.ToString()); 30 Console.WriteLine("===========================");

31 } 32 } 33 }

48

(49)

Step3 撰寫 撰寫 撰寫Main()方法 撰寫 方法 方法 方法

// FileName : Program.cs

01 namespace ObjectSetValue 02 {

03 class Program 04 {

05 static void Main(string[] args) 06 {

07 Employee MoMo = new Employee { EmpID = "A01", EmpName = 07 Employee MoMo = new Employee { EmpID = "A01", EmpName =

"莫莫莫莫莫莫莫莫", EmpAdd = "台中市中山路一段台中市中山路一段台中市中山路一段1號台中市中山路一段 號", EmpTel = "04-7895642", EmpSalary = 30000 };

08 Employee Dora = new Employee { EmpID = "A02", EmpName ="朵拉朵拉朵拉朵拉", EmpAdd ="台北市南港路一段台北市南港路一段台北市南港路一段台北市南港路一段2號號", EmpTel ="02-1234567",

EmpSalary =10000 };

09 MoMo.ShowInfo();

10 Dora.ShowInfo();

11 Console.Read();

12 } 13 } 14 }

(50)

6.3 靜態成員 靜態成員 靜態成員 靜態成員

使用使用使用

使用 static 關鍵字宣告的成員稱為關鍵字宣告的成員稱為關鍵字宣告的成員稱為關鍵字宣告的成員稱為「「「「靜靜靜靜態成員態成員態成員態成員」」」」 靜靜靜

靜態成員可讓同類別建立的物件都可一態成員可讓同類別建立的物件都可一態成員可讓同類別建立的物件都可一起共態成員可讓同類別建立的物件都可一起共起共用起共用用用 靜

靜靜

靜態成員不需用態成員不需用態成員不需用 new 建立物件就可直接使用態成員不需用 建立物件就可直接使用建立物件就可直接使用建立物件就可直接使用,,,, 必須透過類別名稱再加上

必須透過類別名稱再加上必須透過類別名稱再加上

必須透過類別名稱再加上「必須透過類別名稱再加上「「「.」」」」運算子直接運算子直接運算子直接運算子直接呼叫呼叫呼叫呼叫 必須透過類別名稱再加上必須透過類別名稱再加上

必須透過類別名稱再加上「「「「.」」」」運算子直接運算子直接運算子直接運算子直接呼叫呼叫呼叫呼叫 public 的的的的靜靜靜靜態成員即可態成員即可態成員即可態成員即可。。。。

呼叫靜 呼叫靜呼叫靜

呼叫靜態成員寫法態成員寫法態成員寫法:態成員寫法::: 類別名稱

類別名稱

類別名稱類別名稱.欄位欄位欄位欄位 類別名稱類別名稱

類別名稱類別名稱.屬性屬性屬性屬性 類別名稱

類別名稱

類別名稱類別名稱.方法方法方法方法([引引引引數數數數串列串列串列串列])

50

參考文獻

相關文件

目次 課程類別 課程主題 時數

[r]

interface ITextBox : IControl// 繼承了介面 Icontrol 的方法 Paint() { void SetText(string text); }. interface IListBox : IControl// 繼承了介面 Icontrol 的方法 Paint() {

以下 Java 程式執行完後,輸出結果為何?(A)無法編譯,因為 Rectangle 類別不能同時 extends 一個類別且 implemets 一個介面(B)無法編譯,因為 Shapes 類別沒有

確認類別點選

香港大學佛學研究中心 客座助理教授.. 妬不男 ﹕男根似無,見他行婬,因生 妬心,遂感有根

135-141; GRETIL - Göttingen Register of Electronic Texts in Indian Languages: (http://gretil.sub.uni- goettingen.de/gretil/1_sanskr/4_rellit/buddh/psp_4u.htm) 英 譯 本 : Edward

類別 弱項 強項 (寫作能力/困難) 自閉症 理解和表達. 言語、缺乏 想像力、理