標籤:
平時寫代碼也就依照樣子畫葫蘆,重複著相同的工作,也很無聊,現在開始整理下,一些基礎知識,都已經快忘記光了,寫下來記錄下,平時還可以重溫下。
什麼是屬性?
比如:
public class A{
public int Id{get;set;}
public string Name{get;set;}
}
上面是一個類,那麼我們要訪問的屬性,就是:
A model=new A();//調用類
A.Id//Id就是屬性
平時我們都是這麼來寫代碼的。分析下:官網說法:屬性結合了欄位和方法的多個方面。對於對象的使用者,屬性顯示為欄位,訪問該屬性需要完全相同的文法。對於類的實現者,屬性是一個或兩個代碼塊,表示一個 get 訪問器和/或一個 set 訪問器。當讀取屬性時,執行 get 訪問器的代碼塊;當向屬性分配一個新值時,執行set 訪問器的代碼塊。不具有 set 訪問器的屬性被視為唯讀屬性。不具有 get 訪問器的屬性被視為唯寫屬性。同時具有這兩個訪問器的屬性是讀寫屬性。
官網的說法,還是蠻好的。一看就明白了。通俗點說就是通過get和set兩個東東去設定的熟悉,調用的話,對象中調用我們叫屬性,類中書寫,就是set和get的方法。
好吧,我們會通常說屬性基本上就是欄位的應用了。
public class Date{ private int month = 7; //"backing store" public int Month { get { return month; } set { if ((value > 0) && (value < 13)) { month = value; } } }}
Date model=new Date();//Month=7,month=7;
model.Month=9;//Month=9,month=9;
當我們初始化model的時候,去執行Date類,那麼開始從上到下執行,month是一個private私人變數,只有內部訪問,也就是說外部(其他類型或者成員)不能直接調用,只有在Date裡面自己調用自己,那不就是說,我們只能在Date類裡面改自己的值了。
Month是public,聲明屬性的話,預設是public,不解釋了。看看裡面的get和set。
get就是去得到這個屬性的值,這裡的return month那麼Month是值就是month的值7了,set就是去設定這個值看看是否符合要求,這裡是 Month 值設定為 1 和 12 之間,那麼結果就是Month=7,month=7;
看看model.Month=9;這不就是去set嘛,好吧就是,那麼判斷是否是1到12之間,是的話,month=value。結果就是:Month=9那麼此時的month呢?我們不是看到了month=value那麼month也是9了。
知識點:類型就是enum(枚舉類型),class(類),interface(介面),struct(結構)等類型。類型成員如函數,成員變數等。
我們現在開始看看,幾個不同的例子:
1.mode.Month=125;//Month=9,month=9;
2.如果Date裡面加上,
public int num { get; set; }
public string str { get; set; }
這個不就是我們常常這樣子寫的,那麼初始化的話,int預設是0,str為null,後面一樣的原理set和get了。
3.如果在Date裡面的Month裡面的set裡面設定:
public int Month { get; set; }//初始化Month為0
4.如果去掉month:那麼這樣子就會出錯。
public int Month
{
get
{
return month;
}
set
{
if ((value > 0) && (value < 13))
{
month = value;
}
}
}
屬性結束了,想想還是很簡單不就是set和get。
什麼是繼承?
概念什麼自己去百度吧,我的理解就是父類和子類,比如:
class A{//父類
****一些方法屬性****
}
class B:A{//子類
****一些方法屬性****
}
B既然繼承了A的所有方法和屬性,那麼我就直接用吧,當然每個人都有秘密,A也不例外,A也有一些不想告訴你的,那麼A就private了,B說我想看private的,A說抱歉哦不給你看哦。
關鍵點:
1.子類擁有父類非private得屬性和功能;
2.子類具有自己的屬性和功能,即子類可以擴充父類沒有的屬性和功能;
3.子類還可以以自己的方式實現父類的功能(即方法重寫)。
當然還有protected這個東東,protected修飾符表示繼承時子類可以對父類有完全訪問權。
class B:A{//子類
public B():base();//子類構造方法需要調用父類同樣參數類型的構造方法,用base關鍵字代表父類
****一些方法屬性****
}
對於調用父類的成員,可以用base關鍵字。
構造方法:B的構造方法就是B(),那麼A的就是A()這個c#就是預設的,但是我們可以根據我們的要求去書寫自己的構造方法,比如在A中寫一個帶參數的構造方法,如:A(string name)
如果是繼承怎麼寫,很簡單就是:
public B(string name):base(name){
}
就是這麼的任性。
如果理解有誤,請指出。
c#基礎知識複習