====上一章《C#基礎》
一、為什么需要面向對象:
在面向對象出現之前,結構化程序設計是程序設計的主流,被稱為”面向過程“的程序設計。
面向過程的開發方法,通常會存在以下問題:
1、軟件復用性差
2、軟件可維護性差
3、軟件靈活性差
面向對象編程思想中的對象,是一種具有狀態(屬性)和行為(方法)的數據結構,用於描述現實世界的某個事物,將現實世界的事物模型化。
二、對象與類的關系:
類:對事物的一種抽象定義;
對象:客觀存在的具體事物。
2.1、創建類和對象:
聲明類:class className //<類名>
{
//Fields<字段>
//Methods<方法>
//Properties<屬性>
}
創建對象:className Object=new Constructor(參數列表);
類名 對象名 構造方法()
2.2、字段與屬性:
1、字段:類的成員,用於描述一類事物的某個特征的變量。
【舉例】:Employee類中具有很多的特征(如姓名、年齡等),在定義類時即可用兩個字段分別存儲員工的姓名和年齡。
class Employee //聲明類
{
public String employeeName;//員工的姓名字段
public int emlioyeeAge;//員工的年齡字段
}
Employee employee=new Employee();//創建對象(實例化對象相當於實實在在存在的一個人,類只是抽象的定義一個人的類)
employee.employeeAge=20;//通過對象使用字段,給對象賦值年齡。
2、屬性:對字段的封裝,用於阻止非法數據的輸入,從而保護內部數據的安全。
【封裝】:隱藏內部實現、對外提供公共操作的方式。
對象就是封裝了數據和操作這些數據的代碼的邏輯實體。
在一個對象內部,某些代碼和數據不能被外界訪問,對象通過這種方式對內部數據提供不同級別的保護,用於防止程序中的隱藏部分由於意外而被改變或被錯誤操作。
【訪問修飾符】:從上到下,私有程度逐漸降低
private:只能在本類中使用
protected:在本類中及其子類中可以使用
internal:同一命名空間(程序集)中的類可以使用
public:所有類均可使用
【舉例】:Employee類中具有很多的特征(如姓名、年齡等),在定義類時即可用兩個字段分別存儲員工的姓名和年齡。
class Employee //聲明類
{
private String employeeName;//員工的姓名字段
public String EmployeeName
{
get{return employeeName;}//只讀屬性
set{employeeName=value;}//只寫屬性
}
private int emlioyeeAge;//員工的年齡字段
public String EmployeeAge
{
get{return employeeAge;}//只讀屬性
set
{
if(value<=0||value>100)
{
employeeAge=18;
Console.WriteLine("年齡設置錯誤!");
}
else
{
employeeAge=value;
}
}
}
}
Employee employee=new Employee();//創建對象(實例化對象相當於實實在在存在的一個人,類只是抽象的定義一個人的類)
employee.employeeAge=20;//自動調用屬性EmployeeAge中的set訪問器
//自動調用屬性EmployeeAge中的get訪問器
Console.WriteLine("該員工的年齡是:{0}",employee.EmployeeAge);
2.3、方法:(實例方法)面向對象程序設計中,對象可以執行的操作被稱為方法。
1、方法的定義和調用:
【語法】:訪問修飾符 返回值類型 方法名(參數列表) //參數列表可以為空,但括號不能省略;存在多個參數時,需要使用逗號分隔。
{ //返回值類型可以是c#中的任意類型;也可以沒有返回值,若沒有返回值則必須使用Void.
方法體; //方法體中無論有多少行代碼都必須使用括號將其括起來。
}
【調用】:
a、同一類中的方法直接通過方法名進行調用;
b、同一命名空間不同類中的方法調用方式如下:
⑴、創建對象;//類名 對象名=new 構造方法();
⑵、通過對象名.方法名進行調用。//對象名.方法名();
c、不同命名空間中的方法調用方式如下:
⑴、導入命名空間;//using 命名空間
⑵、創建對象;
⑶、通過對象名.方法名進行調用。
2、構造方法:類被實例化時首先執行的一種特殊方法,用於完成對象屬性的初始化操作。(在創建對象的同時將屬性初始化)
【注意】:一個類中若沒有定義任何構造方法,則運行環境會提供一個無參的構造方法。
【分為】:無參的構造方法和有參的構造方法。
【語法】:訪問類名(參數列表) //構造方法名與類名相同
{ //構造方法沒有返回值
語句塊;
}
【舉例】:class Employee
{
public Employee(String employeeName,int employeeAge)//創建一個有參的構造方法
{
EmployeeName=employeeName;
EmployeeAge=employeeAge;
}
}
//創建對象
Employee employee=new Employee("Jack",20);
3、靜態方法:(類方法)通過satic關鍵字修飾的方法
【語法】:訪問修飾符 static 返回值類型 方法名(參數列表) //靜態方法中只能訪問靜態的方法和屬性
{ //在調用時只能通過類名.方法名的方式實現
方法體;
}
====下一章《關於方法》