首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 正文

展现C#世界之五:类的介绍

  你可以应用4个 存取修饰符之一:

  public——任何地方都可以访问该成员,这是具有最少限制的存取修饰符。

  protected——在类及所有的派生类中可以访问该成员,不允许外部访问。

  private——仅仅在同一个类的内部才能访问该成员。甚至派生类都不能访问它。

  internal——允许相同组件(应用程序或库)的所有代码访问。在。NET组件级别,你可以把它视为public,而在外部则为private.

  为了演示存取修饰符的用法,我稍微修改了Triangle例子,使它包含了新增的域成员和一个新的派生类(见清单 5.13)。

  清单 5.13 在类中使用存取修饰符

  1: using System;

  2:

  3: internal class Triangle

  4: {

  5: protected int m_a, m_b, m_c;

  6: public Triangle(int a, int b, int c)

  7: {

  8: m_a = a;

  9: m_b = b;

  10: m_c = c;

  11: }

  12:

  13: public virtual double Area()

  14: {

  15: // Heronian formula

  16: double s = (m_a + m_b + m_c) / 2.0;

  17: double dArea = Math.Sqrt(s*(s-m_a)*(s-m_b)*(s-m_c));

  18: return dArea;

  19: }

  20: }

  21:

  22: internal class Prism:Triangle

  23: {

  24: private int m_h;

  25: public Prism(int a, int b, int c, int h):base(a,b,c)

  26: {

  27: m_h = h;

  28: }

  29:

  30: public override double Area()

  31: {

  32: double dArea = base.Area() * 2.0;

  33: dArea += m_a*m_h + m_b*m_h + m_c*m_h;

  34: return dArea;

  35: }

  36: }

  37:

  38: class PrismApp

  39: {

  40: public static void Main()

  41: {

  42: Prism prism = new Prism(2,5,6,1);

  43: Console.WriteLine(prism.Area());

  44: }

  45: }

  Triangle 类和 Prism 类现在被标为 internal.这意味着它们只能在当前组件中被访问。请记住".NET组件"这个术语指的是包装( packaging,),而不是你可能在COM+中用到的组件。Triangle 类有三个 protected成员,它们在构造函数中被初始化,并用于面积计算的方法中。由于这些成员是protected 成员,所以我可以在派生类Prism中访问它们,在那里执行不同的面积计算。Prism自己新增了一个成员m_h,它是私有的——甚至派生类也不能访问它。花些时间为每个类成员甚至每个类计划一种保护层次,通常是个好主意。当需要引入修改时,全面的计划最终会帮助你,因为没有程序员会愿意使用"没有文档"的类功能。

  5.6 小结

  这章显示了类的各种要素,它是运行实例(对象)的模板。在一个对象的生命期,首先被执行的代码是个构造函数。构造函数用来初始化变量,这些变量后来在方法中用于计算结果。

  方法允许你传递值、引用给变量,或者只传送一个输出值。方法可以被改写以实现新的功能,或者你可以屏蔽基类成员,如果它实现了一个具有和派生类成员相同名字的方法。

  命名属性可以被当作域成员(成员变量)或属性存取标志实现。后者是get和set存取标志,忽略一个或另外一个,你可以创建仅写或仅读属性。存取标志非常适合于确认赋给属性的值。C#类的另外一个功能是索引,它使象数组语法一样访问类中值成为可能。还有,如果当类中的某些事情发生时,你想客户得到通知,要让它们与事件关联。

  当垃圾收集器调用析构函数时,对象的生命就结束了。由于你不能准确地预测这种情况什么时候会发生,所以应该创建一个方法以释放这些宝贵的资源,当你停止使用它们时。

上一页  [1] [2] [3] [4] [5] [6] [7] 

【责编:John】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航