面向對象(一)封裝 命名空間 訪問修飾符等
一、封裝
封裝,即隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別;將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。
封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過外部借口,以特定的訪問權限來使用類的成員。
public class 類名 { //成員變量 private 數據類型 _屬性名; //屬性 public 數據類型 屬性名; { get{return _屬性名;} set{_屬性名 = value;} }public 數據類型 屬性名2; { get{return _屬性名 + "字符串";} } //成員方法 public 函數名(變量1,變量2) { 函數體 } }
這就是一個典型的封裝,包括三部分:成員變量,屬性,成員方法。
成員變量是類的基本屬性。
屬性是對成員變量的保護,對成員變量的屬性值設置與修改進行過濾。
一個成員變量可以有多個屬性。多個屬性可以對成員變量的屬性值進行不同類的輸出和設置。只設置get是只讀屬性。
成員方法是一種函數,
可以對類內的數據進行處理,並返回值。
二、訪問修飾符
訪問修飾符是對類,屬性,方法的公開等級進行分類的等級制度。
1、public - 公開的, 訪問不受限制。
2、private - 私有的,訪問僅限於包含該成員的類。
3、internal - 默認的,訪問僅限於當前程序集。什麽都不寫就是默認的。
4、protected - 被保護的。
三、命名空間(namespace) /程序集
命名空間是對各種代碼的一種管理方式,用於組織和重用代碼。
由於詞匯量的限制,數據和函數的命名會出現不可避免的重復,命名空間則對此做出了限制:只有在命名空間內,該名稱唯一,這樣就防止了沖突。
using關鍵詞,用於表明程序使用的是給定命名空間中的名稱。
比如using System;表明使用了System命名空間,這個空間定義了Console,那麽就可以直接調用Console。
自定義命名空間時,如果在文件夾內創建,命名空間名字會變成 “文件夾名.文件名”。這個名字可以隨意修改,去掉文件夾名也可以。
在調用命名空間時,和當前命名空間處於同一文件夾下時可以直接調用,如果不在,比如在同一文件夾下的另一個文件夾裏,那麽可以用 “ using 命名空間名字; ”調用。
四、靜態類
public static class math { public static decimal sum(decimal a,decimal b) { return a+b; } }
static - 靜態的,將類定義為一個靜態類,裏面的數據一般都是靜態的,也可以包含普通數據和方法,但一般建立靜態類時只用靜態數據和方法。
普通類不可包含靜態數據和方法。
靜態類不需要實例化,可以通過 類名.屬性 直接 引用。
五、構造函數
構造函數 ,是一種特殊的方法。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。
構造函數在類中是默認隱藏的,也可以寫出來。
public class 類名 { //構造函數 public 類名() { //設置默認值 _屬性名 = 默認屬性值; } //成員變量 private 數據類型 _屬性名; //屬性 public 數據類型 屬性名; { get{return _屬性名;} set{_屬性名 = value;} } //成員方法 public 函數名(變量1,變量2) { 函數體 } }
構造函數的名字必須和類名一樣。
實例化就是引用構造函數的過程。
可以在構造函數內給屬性設定默認值。
面向對象(一)封裝 命名空間 訪問修飾符等