1. 程式人生 > >C# 面向對象的封裝、繼承、多態

C# 面向對象的封裝、繼承、多態

col 結構 {} sta size 經紀人 繼承關系 類實例化 派生類

一、封裝:

封裝:把客觀的事物封裝成類,使用和修改方便;

作用和結構體使用方法相似,程序執行流程不同;

要點:成員變量,屬性,成員方法,構造函數,成員方法的靜態和非靜態,命名空間,常用的訪問修飾符public公共的、parvate私有的,只有類本身可以訪問,internal默認的,同一個命名空間下可以訪問、protected被保護的、同一個繼承關系下可以訪問;

重名問題:同一個作用域下不允許出現重名問題,最簡答解釋作用域就是一個花括號內,而每一個循環是不同的花括號的情況下重名是沒有關系的;

1、*****成員變量最基本的“經紀人”

class student //新建類

{

  private string _name; //成員變量

  public string name //屬性

  {

  get { return _name; } //return的作用就是扔給外面一個值。

            //如果只有get,就只往外輸出固定的值;

  set { _name = value; } //如果執行語句 student.name = "abcde"; 那麽這裏value的值就是"abcde";

            //value的作用就是從外面賦予成員變量值。

  }

2、*****成員變量可以有多個“經紀人”,而且數據類型可以不一致

  private bool _sex;

  public bool sex

  {

    get{ return _sex; }

    set{ _sex = value; }

  }

  public string sexabc

  {

  get { return "abcd"+ _sex; } //如果執行語句 student.name = "abcde"; 那麽這裏value的值就是"請輸入false";

               //如果執行語句 student.name = "false"; 那麽這裏value的值就是"abcdfalse";

  set {

    if(value == "false")

      _sex = value;

    else

      _sex = "請輸入false";

    }

  }

3、*****構造函數

class student

{

  public student() { } //創建構造函數就是執行了這一步;默認不被寫出來,但是真實存在;

}

student s = new student(); //這個過程叫實例化的過程;而student()這個方法就是一個構造函數;

總結:重建對象的過程就是將類實例化的過程;

實例化的過程就是執行構造函數的過程;

構造函數是在創建完類之後形成的;

4、*****成員方法

  private string _name;

  public string name

    {

      get { return _name; }

      set { value = _name; }

    }

    public string say() //新建一個方法

    {

      return "啦啦啦"+_name;

    }

    student s = new student();

    s.name = "abcd";

    string str = s.say();

    Console.Write(s.str); //輸出的是say這個方法返回的值,此時是 啦啦啦abcd;

總結:在構造函數內可以給private賦值;如果在外面重新賦值那麽就會覆蓋構造函數內給private賦的值,輸出新的,如果沒有賦值,那麽默認輸出構造函數內賦予的值;

5、*****靜態方法

含有static關鍵字的就是靜態方法;

實例化的靜態無法使用靜態的方法;

靜態的方法屬於類本身,要用類名點出來;public static int abc(){} 賦值方法是:student.abc(); student就是類名;

5、*****命名空間或者程序集

namespace;

需要引用using 空間名;

二、繼承

public class fly //父類,這是個類名;

{

}

public string brid:fly //子類,類名;可以繼承父級的公共用的屬性;

{

}

public string little brid:brid //孫子類,類名;可以繼承祖父類、父類的公共用的屬性;

{

}

1、 父類、基類

2、子類、派生類

三、多態(部分)

1、public vritual class plane:brid //vritual 虛擬的 override重寫

  {

    public override string (brid想要修改繼承的方法)

      { return "aaaaa"; }

  }

方法名一樣是可以的,會以重載的方式顯示;

C# 面向對象的封裝、繼承、多態