一、封裝
C#中可使用類來達到數據封裝的效果,這樣可以使數據與方法封裝成單一元素,以便於通過方法存取數據。除此之外,還可以控制數據的存取方式。
在面向對象編程中,大多數都是以類作為數據封裝的基本單位。類將數據和操作數據的方法結合成一個單位。設計類時,不希望直接存取類中的數據,而是希望通過方法來存取數據。這樣就可以達到封裝數據的目的,方便以后的維護升級,也可以在操作數據時多一層判斷。
此外,封裝還可以解決數據存取的權限問題,可以使用封裝將數據隱藏起來,形成一個封閉的空間,然后可以設置哪些數據只能在這個空間中使用,哪些數據可以在空間外部使用。一個類中包含敏感數據,有些人可以訪問,有些人不能訪問,如果不對這些數據的訪問加以限制,后果將會非常嚴重。所以要對類的成員使用不同的訪問修飾符,從而定義他們的訪問級別。
封裝語法:
Public 數據類型 變量名
{
get
{
return 變量名
}
set
{
變量名=value;
}
}
當然了!get和set有快捷鍵的:光標選擇要封裝的屬性然后右鍵點擊快速操作和重構…(Chrl+.)點擊封裝字段(並使用屬性)
二、繼承
繼承是面向對象最重要的特性之一。任何類都可以從另外一個類繼承,這就是說,這個類擁有它繼承類的所有成員。在面向對象編程中,被繼承的類稱為父類或基類。C#中提供了類的繼承機制,但只支持單繼承,而不支持多繼承,即在C#一次只允許繼承一個類,不能同時繼承多個類。
承語法:
Public class 類名:父類名
如何使用父類里面的成員變量,方法,構造函數?
關鍵字:base
成員變量:
base.成員變量名
方法:
base.方法名
**一個類只能繼承一個父類跟Java不一yangc#中類繼承只允許單繼承,但是接口繼承允許多繼承 ,一個子接口可以有多個父接口, 接口可以從零或多個接口中繼承.級繼承常會引起繼承來的類之間的混亂,繼承而來的方法往往沒有唯一性,所以C#中類的繼承只可以是一個樣
但是可以同時現接口!
)
三、多態
多態性意味着有多重形式。
在面向對象編程范式中,多態性往往表現為"一個接口,多個功能"。
多態性可以是靜態的或動態的。
在靜態多態性中,函數的響應是在編譯時發生的。
在動態多態性中,函數的響應是在運行時發生的。
1.靜態多態性
在編譯時,函數和對象的連接機制被稱為早期綁定,也被稱為靜態綁定。C# 提供了兩種技術來實現靜態多態性。
分別為:
1.1方法重載:
可以在同一個范圍內對相同的方法名有多個定義。
方法的定義必須彼此不同,可以是參數列表中的參數類型不 同,也可以是參數個數不同。
不能重載只有返回類型不同的方法聲明。
1.2運算符重載
2.動態多態性
當有一個定義在類中的函數需要在繼承類中實現時,可以使用虛方法。
2.1:虛方法是使用關鍵字 virtual 聲明的。
2.2:虛方法可以在不同的繼承類中有不同的實現。
2.3:對虛方法的調用是在運行時發生的。
2.4:動態多態性是通過抽象類和虛方法實現的。
定義虛方法:
訪問修飾符 virtual 返回的數據類型/void 方法名()
{
//執行代碼,也可以完全不寫
}
重寫父類的方法(子類中):
訪問修飾符 override 返回的數據類型
void 方法名()
{
//執行代碼
}-
namespace PolymorphismApplication
{
class Printdata
{
void print(int i)
{
Console.WriteLine("Printing int: {0}", i );
}
void print(double f)
{
Console.WriteLine("Printing float: {0}" , f);
}
void print(string s)
{
Console.WriteLine("Printing string: {0}", s);
}
static void Main(string[] args)
{
Printdata p = new Printdata();
// 調用 print 來打印整數
p.print(5);
// 調用 print 來打印浮點數
p.print(500.263);
// 調用 print 來打印字符串
p.print("Hello C#");
Console.ReadKey();
}
}
}
上面代碼被編譯執行時結果是
Printing int: 5
Printing float: 500.263
Printing string: Hello C#:
