首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> C#/CSHARP教程
SUNWEN教程之----C#进阶4-.NET教程,C#语言
作者:网友供稿 点击:19
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
sunwen教程之----c#进阶
(四)
mrfat@china.com  
大家好,我是武汉华师的sunwen.呵呵,下午好不容易有了时间出去玩了,到了归元寺.门票十元,不算贵,sunwen照了好多像,用不了多久,就可以让大家看一看了.

闲话少说,让我们进入正题.这次我要向大家讲的是c#中的属性.属性是什么呢,比如说我是男的,男就是我的一人属性.我是一个大一的学生,大一也是我的一个属性.属性就是一个对象的性质.很简单吧,呵呵!下面,我给出两个例子,第一个例子出明了如何声明一个可以修改的属性,另一个例了建立了一个抽象的属性(abstract),并且说明了如何在子类中丢弃它.好,下面让我们开始吧.

例子一:


000: // properties\person.cs
001: using system;
002: class person
003: {
004:     private string myname ="n/a";
005:     private int myage = 0;
006:
007:     // 声明一个字符型的属性name
008:     public string name
009:     {
010:         get
011:         {
012:            return myname;
013:         }
014:         set
015:         {
016:            myname = value;
017:         }
018:     }
019:
020:     // 声明一个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:         // 建立一个person的实例
043:         person person = new 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: }
这个例子的输出是:

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

好了,又起床了,昨天写到这,就跑到床上睡了,呵呵.现在是五一的第二天,看看我今天能写几篇,昨天写了二篇.

从上面的程序我们可以看出,一个类的属性的设置,借用了vb的概念,和java中不尽相同了.(这就是m$,tmd!)有的朋友可能很奇怪,为什么我们可以用console.writeline()来打印一个对象person呢.其实道理很简单,和在java中的一样,当调节器用一个打印方法时,这个对象自动调用它的tostring()(在java中是tostring,tmd,又差点犯错!)方法.在33行,我们可以看到有这个方法的影子,override这个关键字大概就是覆盖父类的方法吧,这是不是有点多余?我们可以看到,一个对象的属性的设置是通过一个get()和set()组合来完成的,当然,还有一个value这个东东.补充一下,你还可以控制一个属性的读/写权限,只是把get()和set()简单地去掉就可以了,比如你不要写的属性,就不要set()就可以了,如果你不要读,就不要get()吧.总得感觉,c#在这点上没有java来的灵活(完了,又要被盖痴打了!).

第二个例子:

这个例子说明了如何建立抽象的属性(abstract),什么是抽象的属性呢,所谓的抽象的属性呢,就是....(唉,每次废话都这么多!ft) 一个抽象类并不提供执行属性存取程序,并且,他可以在子类中被忽略.下面的例子有三个文件,你要分别编译它们才能得到结果,它们是:

abstractshape.cs: shape类,包含一个area抽象属性
shapes.cs: shape的子类
shapetest.cs: 显示程序.
要编译这些程序,运行:csc abstractshape.cs shapes.cs shapetest.cs就可以了.运行完之后,它会产生shapetest.exe这个可执行程序.

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;   // 这句调用了id属性的set构建器
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: }
看这个程序, 实际上非常地简单,当这个类对的对象被建立时,初始化部分为007-010,它把建立对象的参数s给了id这个属性.然后进行了上一个例子的操作.实际上,我们可以把抽象属性与java中的接口(interface)相比,它们只提拱一个方法的名称,而不提供这个方法的内容.就像area这个抽象属性,有一个get,但是它并没有指定get方法(也许它不能称之为方法)里的内容,即要get做什么事情. 这个事情,由它的子类来做.

第二个文件:在这个文件中,一个类覆盖了(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: }
这个例子就有些让我们一头雾水了,:是干什么的,好象是继承,相当于java中的extends吧.我想是的.我们先看一看吧.

下面的第三个文件就是一个测试文件了,很简单,大家看一看.

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: }
从这个例子上看,:这个符号的确是extends的意思,就是继承.继承是什么意思,说白了,就是生孩子的意思.比如下面一句sunwenson extends sunwen,这名就是说sunwenson这个类继承了sunwen,sunwenson这个类有sunwen类的所有东西,同时可以添加和删除sunwen中的一些东西.就这么简单,但是这是现代软件发展的一项重要技术,因为它可以使软件的重用性大大提高.唉,这些就只有大三大四的人说了,我就没资格了.呵呵.

这个程序的输出是:

shapes collection
square #1 area = 25.00
circle #1 area = 28.27
rectangle #1 area = 20.00
完了,这一节又完了.要理解这一节,有一定的难度, 特别对那些没有java或c++编程经验的朋友.不过不要害怕,鼓起勇气学下去,一定会有所收获的. 我也要休息一下了,嘿嘿,早饭还没有吃呢!
  

下一页

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用C#编写Windows Forms应用程序(转)-.NET教程,Windows开发
·C#学习杂记-.NET教程,C#语言
·将文本格式的文章转换为html/xml格式文本的功能封装到Javabean-JSP教程,Java技巧及代码
·用java小程序applet实现无限级树结构-JSP教程,Java技巧及代码
·《.net编程先锋C#》第一章 C#简介-.NET教程,C#语言
·企业人事信息管理系统1.0-ASP教程,数据库相关
·《.net编程先锋C#》第三章 第一个C#应用程序-.NET教程,C#语言
·《.net编程先锋C#》第二章 理论基础-公用语言 运行环境-.NET教程,C#语言
·Windows应用程序调试必备的--符号文件(Symbols)-.NET教程,评论及其它
·c#反编译微软msdn2003的帮助文档,并将反编译结果保存到一个sqlserver数据库中
最新文章
·vista的新特性:懒人的安全感_windows vista
·photoshop为情侣照片打造韩式梦幻相框_photoshop教程
·专访seobbs站长乐思蜀_站长访谈
·嘟嘟网络陈艺光:诚信是一种信仰_站长访谈
·俺自己黄修源:只问耕耘,不问收获_站长访谈
·李向华:如何提高论坛用户粘性_站长访谈
·给windows vista系统网络和共享中心“换脸”_windows vista
·胡宪东谈搜索优化的实战_站长心得
·网站快速成功的九个步骤_站长心得
·google pr数字背后的含意_google推广
相关主题
  • SUNWEN教程之----C#进阶8-.NET教程,C#语言
  • SUNWEN教程之----C#进阶7-.NET教程,C#语言
  • SUNWEN教程之----C#进阶9-.NET教程,C#语言
  • SUNWEN教程之----C#进阶10-.NET教程,C#语言
  • SUNWEN教程之----C#进阶11-.NET教程,C#语言
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭