打印本文 打印本文  关闭窗口 关闭窗口
<展现C#> 第五章 类 (2)
作者:采集员 文章来源:来源于网络 点击数: 更新时间:2005/9/10 12:27:36
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] 



打印本文 打印本文  关闭窗口 关闭窗口