c#进阶教程(四)c#中的属性

上传人:第*** 文档编号:34023922 上传时间:2018-02-20 格式:DOC 页数:6 大小:32.50KB
返回 下载 相关 举报
c#进阶教程(四)c#中的属性_第1页
第1页 / 共6页
c#进阶教程(四)c#中的属性_第2页
第2页 / 共6页
c#进阶教程(四)c#中的属性_第3页
第3页 / 共6页
c#进阶教程(四)c#中的属性_第4页
第4页 / 共6页
c#进阶教程(四)c#中的属性_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《c#进阶教程(四)c#中的属性》由会员分享,可在线阅读,更多相关《c#进阶教程(四)c#中的属性(6页珍藏版)》请在金锄头文库上搜索。

1、C#中的属性大家好,我是武汉华师的 SUNWEN.呵呵,下午好不容易有了时间出去玩了,到了归元寺.门票十元,不算贵,SUNWEN 照了好多像,用不了多久,就可以让大家看一看了.闲话少说,让我们进入正题.这次我要向大家讲的是 C#中的属性.属性是什么呢,比如说我是男的,男就是我的一人属性.我是一个大一的学生,大一也是我的一个属性.属性就是一个对象的性质.很简单吧,呵呵!下面,我给出两个例子,第一个例子出明了如何声明一个可以修改的属性,另一个例了建立了一个抽象的属性(Abstract),并且说明了如何在子类中丢弃它.好,下面让我们开始吧.例子一:000: / Propertiesperson.cs

2、001: using System;002: class Person003: 004: private string myName =N/A;005: private int myAge = 0;006: 007: / 声明一个字符型的属性 Name008: public string Name009: 010: get 011: 012: return myName; 013: 014: set 015: 016: myName = value; 017: 018: 019: 020: / 声明一个 int 型的 Age 属性021: public int Age022: 023: get

3、 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: / 建立一个 Person 的实例043: Person person = n

4、ew Person();044: 045: /打印出它的属性046: Console.WriteLine(Person details - 0, person);047: 048: / 对属性进行一些设置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: 这个例子的

5、输出是:Simple PropertiesPerson details - Name = N/A, Age = 0Person details - Name = Joe, Age = 99Person details - Name = Joe, Age = 100好了,又起床了,昨天写到这,就跑到床上睡了,呵呵.现在是五一的第二天,看看我今天能写几篇,昨天写了二篇.从上面的程序我们可以看出,一个类的属性的设置,借用了 VB 的概念,和 JAVA 中不尽相同了.(这就是 M$,TMD!)有的朋友可能很奇怪,为什么我们可以用Console.WriteLine()来打印一个对象 person 呢.其

6、实道理很简单,和在 JAVA 中的一样,当调节器用一个打印方法时,这个对象自动调用它的 ToString()(在JAVA 中是 toString,TMD,又差点犯错!)方法.在 33 行,我们可以看到有这个方法的影子,override 这个关键字大概就是覆盖父类的方法吧,这是不是有点多余?我们可以看到,一个对象的属性的设置是通过一个 get()和 set()组合来完成的,当然,还有一个 value 这个东东.补充一下,你还可以控制一个属性的读/写权限,只是把 get()和 set()简单地去掉就可以了,比如你不要写的属性,就不要 set()就可以了,如果你不要读,就不要 get()吧.总得感觉

7、,C#在这点上没有 JAVA 来的灵活(完了,又要被盖痴打了!). 第二个例子:这个例子说明了如何建立抽象的属性(Abstract),什么是抽象的属性呢,所谓的抽象的属性呢,就是.(唉,每次废话都这么多!FT) 一个抽象类并不提供执行属性存取程序,并且,他可以在子类中被忽略.下面的例子有三个文件,你要分别编译它们才能得到结果,它们是:abstractshape.cs: Shape 类,包含一个 Area 抽象属性 shapes.cs: Shape 的子类 shapetest.cs: 显示程序. 要编译这些程序,运行:csc abstractshape.cs shapes.cs shapetes

8、t.cs 就可以了.运行完之后,它会产生 shapetest.exe 这个可执行程序.000: / Propertiesabstractshape.cs001: using System;002:003: public abstract class Shape004: 005: private string myId;006:007: public Shape(string s)008: 009: Id = s; / 这句调用了 Id 属性的 set 构建器010: 011:012: public string Id013: 014: get 015: 016: return myId;017

9、: 018:019: set020: 021: myId = value;022: 023: 024:025: public abstract double Area026: 027: get;028: 029:030: public override string ToString()031: 032: return Id + Area = + double.Format(Area, F);033: 034: 看这个程序, 实际上非常地简单,当这个类对的对象被建立时,初始化部分为007-010,它把建立对象的参数 s 给了 Id 这个属性.然后进行了上一个例子的操作.实际上,我们可以把抽象属

10、性与 JAVA 中的接口(Interface)相比,它们只提拱一个方法的名称,而不提供这个方法的内容.就像 Area 这个抽象属性,有一个get,但是它并没有指定 get 方法(也许它不能称之为方法)里的内容,即要 get 做什么事情. 这个事情,由它的子类来做.第二个文件:在这个文件中,一个类覆盖了(override)了 Area 属性.000: / Propertiesshapes.cs001: public class Square : Shape002: 003: private int mySide;004:005: public Square(int side, string id

11、) : base(id)006: 007: mySide = side;008: 009:010: public override double Area011: 012: get013: 014: return mySide * mySide;015: 016: 017: 018:019: public class Circle : Shape020: 021: private int myRadius;022:023: public Circle(int radius, string id) : base(id)024: 025: myRadius = radius;026: 027:02

12、8: public override double Area029: 030: get031: 032: return myRadius * myRadius * System.Math.PI;033: 034: 035: 036:037: public class Rectangle : Shape038: 039: private int myWidth;040: private int myHeight;041:042: public Rectangle(int width, int height, string id) : base(id)043: 044: myWidth = wid

13、th;045: myHeight = height;046: 047:048: public override double Area049: 050: get051: 052: return myWidth * myHeight;053: 054: 055: 这个例子就有些让我们一头雾水了,:是干什么的,好象是继承,相当于 JAVA 中的extends 吧.我想是的.我们先看一看吧.下面的第三个文件就是一个测试文件了,很简单,大家看一看.000: / Propertiesshapetest.cs001: public class TestClass002: 003: public stati

14、c 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: 从这个例子上看,:这

15、个符号的确是 extends 的意思,就是继承.继承是什么意思,说白了,就是生孩子的意思.比如下面一句 sunwenson extends sunwen,这名就是说 sunwenson 这个类继承了 sunwen,sunwenson 这个类有 sunwen 类的所有东西,同时可以添加和删除 sunwen 中的一些东西.就这么简单,但是这是现代软件发展的一项重要技术,因为它可以使软件的重用性大大提高.唉,这些就只有大三大四的人说了,我就没资格了.呵呵.这个程序的输出是:Shapes CollectionSquare #1 Area = 25.00Circle #1 Area = 28.27Rectangle #1 Area = 20.00

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号