国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

SUNWEN教程之----C#進(jìn)階4

2024-07-21 02:20:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
sunwen教程之----c#進(jìn)階
(四)
[email protected]  
大家好,我是武漢華師的sunwen.呵呵,下午好不容易有了時(shí)間出去玩了,到了歸元寺.門票十元,不算貴,sunwen照了好多像,用不了多久,就可以讓大家看一看了.

閑話少說(shuō),讓我們進(jìn)入正題.這次我要向大家講的是c#中的屬性.屬性是什么呢,比如說(shuō)我是男的,男就是我的一人屬性.我是一個(gè)大一的學(xué)生,大一也是我的一個(gè)屬性.屬性就是一個(gè)對(duì)象的性質(zhì).很簡(jiǎn)單吧,呵呵!下面,我給出兩個(gè)例子,第一個(gè)例子出明了如何聲明一個(gè)可以修改的屬性,另一個(gè)例了建立了一個(gè)抽象的屬性(abstract),并且說(shuō)明了如何在子類中丟棄它.好,下面讓我們開(kāi)始吧.

例子一:


000: // properties/person.cs
001: using system;
002: class person
003: {
004:     private string myname ="n/a";
005:     private int myage = 0;
006:
007:     // 聲明一個(gè)字符型的屬性name
008:     public string name
009:     {
010:         get
011:         {
012:            return myname;
013:         }
014:         set
015:         {
016:            myname = value;
017:         }
018:     }
019:
020:     // 聲明一個(gè)int型的age屬性
021:     public int age
022:     {
023:         get
024:         {
025:            return myage;
026:         }
027:         set
028:         {
029:            myage = value;
030:         }
031:     }
032:
033:     public override string tostring()
034:     {
035:         return "name = " + name + ", age = " + age;
036:     }
037:
038:     public static void main()
039:     {
040:         console.writeline("simple properties");
041:
042:         // 建立一個(gè)person的實(shí)例
043:         person person = new person();
044:
045:         //打印出它的屬性
046:         console.writeline("person details - {0}", person);
047:
048:         // 對(duì)屬性進(jìn)行一些設(shè)置
049:         person.name = "joe";
050:         person.age = 99;
051:         console.writeline("person details - {0}", person);
052:
053:         // 增加年齡
054:         person.age += 1;
055:         console.writeline("person details - {0}", person);
056:     }
057: }
這個(gè)例子的輸出是:

simple properties
person details - name = n/a, age = 0
person details - name = joe, age = 99
person details - name = joe, age = 100

好了,又起床了,昨天寫(xiě)到這,就跑到床上睡了,呵呵.現(xiàn)在是五一的第二天,看看我今天能寫(xiě)幾篇,昨天寫(xiě)了二篇.

從上面的程序我們可以看出,一個(gè)類的屬性的設(shè)置,借用了vb的概念,和java中不盡相同了.(這就是m$,tmd!)有的朋友可能很奇怪,為什么我們可以用console.writeline()來(lái)打印一個(gè)對(duì)象person呢.其實(shí)道理很簡(jiǎn)單,和在java中的一樣,當(dāng)調(diào)節(jié)器用一個(gè)打印方法時(shí),這個(gè)對(duì)象自動(dòng)調(diào)用它的tostring()(在java中是tostring,tmd,又差點(diǎn)犯錯(cuò)!)方法.在33行,我們可以看到有這個(gè)方法的影子,override這個(gè)關(guān)鍵字大概就是覆蓋父類的方法吧,這是不是有點(diǎn)多余?我們可以看到,一個(gè)對(duì)象的屬性的設(shè)置是通過(guò)一個(gè)get()和set()組合來(lái)完成的,當(dāng)然,還有一個(gè)value這個(gè)東東.補(bǔ)充一下,你還可以控制一個(gè)屬性的讀/寫(xiě)權(quán)限,只是把get()和set()簡(jiǎn)單地去掉就可以了,比如你不要寫(xiě)的屬性,就不要set()就可以了,如果你不要讀,就不要get()吧.總得感覺(jué),c#在這點(diǎn)上沒(méi)有java來(lái)的靈活(完了,又要被蓋癡打了!).

第二個(gè)例子:

這個(gè)例子說(shuō)明了如何建立抽象的屬性(abstract),什么是抽象的屬性呢,所謂的抽象的屬性呢,就是....(唉,每次廢話都這么多!ft) 一個(gè)抽象類并不提供執(zhí)行屬性存取程序,并且,他可以在子類中被忽略.下面的例子有三個(gè)文件,你要分別編譯它們才能得到結(jié)果,它們是:

abstractshape.cs: shape類,包含一個(gè)area抽象屬性
shapes.cs: shape的子類
shapetest.cs: 顯示程序.
要編譯這些程序,運(yùn)行:csc abstractshape.cs shapes.cs shapetest.cs就可以了.運(yùn)行完之后,它會(huì)產(chǎn)生shapetest.exe這個(gè)可執(zhí)行程序.

000: // properties/abstractshape.cs
001: using system;
002:
003: public abstract class shape
004: {
005:    private string myid;
006:
007:    public shape(string s)
008:    {
009:       id = s;   // 這句調(diào)用了id屬性的set構(gòu)建器
010:    }
011:
012:    public string id
013:    {
014:       get
015:       {
016:          return myid;
017:       }
018:
019:       set
020:       {
021:          myid = value;
022:       }
023:    }
024:
025:    public abstract double area
026:    {
027:       get;
028:    }
029:
030:    public override string tostring()
031:    {
032:       return id + " area = " + double.format(area, "f");
033:    }
034: }
看這個(gè)程序, 實(shí)際上非常地簡(jiǎn)單,當(dāng)這個(gè)類對(duì)的對(duì)象被建立時(shí),初始化部分為007-010,它把建立對(duì)象的參數(shù)s給了id這個(gè)屬性.然后進(jìn)行了上一個(gè)例子的操作.實(shí)際上,我們可以把抽象屬性與java中的接口(interface)相比,它們只提拱一個(gè)方法的名稱,而不提供這個(gè)方法的內(nèi)容.就像area這個(gè)抽象屬性,有一個(gè)get,但是它并沒(méi)有指定get方法(也許它不能稱之為方法)里的內(nèi)容,即要get做什么事情. 這個(gè)事情,由它的子類來(lái)做.

第二個(gè)文件:在這個(gè)文件中,一個(gè)類覆蓋了(override)了area屬性.

000: // properties/shapes.cs
001: public class square : shape
002: {
003:    private int myside;
004:
005:    public square(int side, string id) : base(id)
006:    {
007:       myside = side;
008:    }
009:
010:    public override double area
011:    {
012:       get
013:       {
014:          return myside * myside;
015:       }
016:    }
017: }
018:
019: public class circle : shape
020: {
021:    private int myradius;
022:
023:    public circle(int radius, string id) : base(id)
024:    {
025:       myradius = radius;
026:    }
027:
028:    public override double area
029:    {
030:       get
031:       {
032:          return myradius * myradius * system.math.pi;
033:       }
034:    }
035: }
036:
037: public class rectangle : shape
038: {
039:    private int mywidth;
040:    private int myheight;
041:
042:    public rectangle(int width, int height, string id) : base(id)
043:    {
044:       mywidth  = width;
045:       myheight = height;
046:    }
047:
048:    public override double area
049:    {
050:       get
051:       {
052:          return mywidth * myheight;
053:       }
054:    }
055: }
這個(gè)例子就有些讓我們一頭霧水了,:是干什么的,好象是繼承,相當(dāng)于java中的extends吧.我想是的.我們先看一看吧.

下面的第三個(gè)文件就是一個(gè)測(cè)試文件了,很簡(jiǎn)單,大家看一看.

000: // properties/shapetest.cs
001: public class testclass
002: {
003:    public static void main()
004:    {
005:       shape[] shapes =
006:          {
007:             new square(5, "square #1"),
008:             new circle(3, "circle #1"),
009:             new rectangle( 4, 5, "rectangle #1")
010:          };
011:       
012:       system.console.writeline("shapes collection");
013:       foreach(shape s in shapes)
014:       {
015:          system.console.writeline(s);
016:       }
017:          
018:    }
019: }
從這個(gè)例子上看,:這個(gè)符號(hào)的確是extends的意思,就是繼承.繼承是什么意思,說(shuō)白了,就是生孩子的意思.比如下面一句sunwenson extends sunwen,這名就是說(shuō)sunwenson這個(gè)類繼承了sunwen,sunwenson這個(gè)類有sunwen類的所有東西,同時(shí)可以添加和刪除sunwen中的一些東西.就這么簡(jiǎn)單,但是這是現(xiàn)代軟件發(fā)展的一項(xiàng)重要技術(shù),因?yàn)樗梢允管浖闹赜眯源蟠筇岣?唉,這些就只有大三大四的人說(shuō)了,我就沒(méi)資格了.呵呵.

這個(gè)程序的輸出是:

shapes collection
square #1 area = 25.00
circle #1 area = 28.27
rectangle #1 area = 20.00
完了,這一節(jié)又完了.要理解這一節(jié),有一定的難度, 特別對(duì)那些沒(méi)有java或c++編程經(jīng)驗(yàn)的朋友.不過(guò)不要害怕,鼓起勇氣學(xué)下去,一定會(huì)有所收獲的. 我也要休息一下了,嘿嘿,早飯還沒(méi)有吃呢!
  

下一頁(yè)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝清县| 德兴市| 新余市| 马尔康县| 綦江县| 扶沟县| 青川县| 大兴区| 呼和浩特市| 桂平市| 鄱阳县| 巍山| 都江堰市| 武隆县| 胶南市| 兴城市| 大邑县| 磐安县| 噶尔县| 偏关县| 德化县| 汾阳市| 类乌齐县| 青岛市| 广州市| 华容县| 鲜城| 绥德县| 盘山县| 宁阳县| 湘阴县| 高清| 唐河县| 青州市| 文化| 广水市| 青川县| 汉源县| 岫岩| 财经| 崇信县|