9.1 C#中类定义
    1.抽象类,不能实例化,只能继承,可以有抽象成员;密封类,不能继承。
    public abstract class MyClass
    {}
   
    public sealed class MyClass
    {}
   
    2.类定义中可以使用的修饰符的组合
    无或internal-----------------------类只能在当前项目中访问
    public-----------------------------类可以在任何地方访问
    abstract或internal abstract--------类只能在当前项目中访问,不能实例化,只能继承
    public abstract--------------------类可以在任何地方访问,不能实例化,只能继承
    sealed或internal sealed------------类只能在当前项目中访问,不能派生,只能实例化
    public sealed----------------------类可以在任何地方访问,不能派生,只能实例化

9.2 System.Object
    1.GetType()允许根据对象的类型来执行不同的代码,对所有的对象都执行相同的代码。
      if (myObj.GetType() == typeof(MyComplexClass))
       {}


9.3 构造函数和析构函数
    1.构造函数的执行序列
    public class MyBaseClass
    {
        public MyBaseClass () {}
        public MyBaseClass (int i){}
    }
    public class MyderiverClass :MyBaseClass
    {
        public MyderiverClass () {}
        public MyderiverClass (int i) {}
        public MyderiverClass (int i,int j) {}
     }
    实例化MyderiverClass:
    MyderiverClass myObj = new MyderiverClass();
    事件的顺序:
    执行System.Object.Object()构造函数
    执行MyBaseClass.MyBaseClass()构造函数
    执行MyderiverClass.MyderiverClass()构造函数
   
    MyderiverClass myObj = new MyderiverClass(4);
    事件的顺序:
    执行System.Object.Object()构造函数
    执行MyBaseClass.MyBaseClass(int i)构造函数
    执行MyderiverClass.MyderiverClass(int i)构造函数
   
    MyderiverClass myObj = new MyderiverClass(4,8);
    事件的顺序:
    执行System.Object.Object()构造函数
    执行MyBaseClass.MyBaseClass()构造函数
    执行MyderiverClass.MyderiverClass(int i,int j)构造函数
   


    2.base关键字指定实例化过程使用基类中匹配指定签名的构造函数。
    public class MyderiverClass :MyBaseClass
    {
        ……
        public MyderiverClass (int i,int j):base(i) {}
     }
    MyderiverClass myObj = new MyderiverClass(4,8);
    事件的顺序:
    执行System.Object.Object()构造函数
    执行MyBaseClass.MyBaseClass(int i)构造函数
    执行MyderiverClass.MyderiverClass(int i,int j)构造函数
   
    也可以使用base关键字指定基类构造函数的字面值
        public class MyderiverClass :MyBaseClass
    {
        public MyderiverClass ():base(5) {}
        ……
     }
    事件的顺序:
    执行System.Object.Object()构造函数
    执行MyBaseClass.MyBaseClass(int i)构造函数
    执行MyderiverClass.MyderiverClass()构造函数

    3.this关键字指定在调用指定的构造函数前,.NET实例化过程对当前类使用非默认的构造函数。
   

9.4 vs2005中的OOP工具

9.5 类库项目

9.6 接口和抽象类
    相似之处:抽象类和接口都包含可以由派生类基础的成员。接口和抽象类都不能直接实例化,但可以声明它们的变量。
    区别:派生类只能继承一个基类,即只能直接继承一个抽象类。类可以使用任意多个接口。
    抽象类可以拥有抽象成员(没有代码体,且必须在派生类中实现,否则派生类本身必须也是抽象的)和非抽象成员(它们拥有代码体,也可以是虚拟的,这样就可以在派生类中重写)。
    接口成员必须在使用接口的类上实现---它们没有代码体。
    接口成员是公共的,但抽象类的成员可以是私有的、受保护的、内部的或受保护的内部成员。
    此外,接口不能包含字段、构造函数、析构函数、静态成员或常量。


9.7 结构类型
    1.浅度复制和深度复制
    详见第11章。

 

 

posted on 2008-01-24 22:53  菲奥内  阅读(122)  评论(0)    收藏  举报