1. 程式人生 > >面向對象(一)封裝 命名空間 訪問修飾符等

面向對象(一)封裝 命名空間 訪問修飾符等

制度 color return 重用 等級 部分 cnblogs 控制 turn

一、封裝

封裝,即隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別;將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。

封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過外部借口,以特定的訪問權限來使用類的成員。

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)
  {
    函數體
  }
}

構造函數的名字必須和類名一樣。

實例化就是引用構造函數的過程。

可以在構造函數內給屬性設定默認值。

面向對象(一)封裝 命名空間 訪問修飾符等