《C#高级编程第6版》学习笔记(1)-----继承

1.概念:

   多重继承:C#不支持多重继承,但是允许派生于一个类或多个接口。

   结构和类:结构总是派生于System.ValueType,它还可以派生于多个接口。类可以派生于一个类或多个接口。

2.实现继承:

  a.声明一个类派生于另一个类:

     class  DerivedClass:BaseClass{

            //这里定义函数和数据成员  

          }

   b.如果类派生于接口和类,则用逗号分开类和接口。

     class  DerivedClass:BaseClass,IInterface1,IInterface2{

            //同上  

          }

   c.对于结构,则如下:

     class  DerivedStruct:IInterface1,IInterface2{

            //同上  

          }

  d.如果在类中没有指定基类,C#编译器就假定System.Object为基类。

     class   MyClass:Object{

            //同上

          }

              和

     class   MyClass:object{

            //同上

          }

      、

     class   MyClass{

            //同上

          }

    是一样的。

 2.1 虚方法

  在一个基类函数前加virtual,该函数就可以在派生类中重写了。

    class BaseClass{

       public virtual string VirtualMethod{

              return "This is a virtual method";

         }

                    }

  在派生类中要重写此虚函数,在函数前加override,成员字段和静态函数不能申明为virtual。

 

2.2隐藏方法

  如果签名的方法在基类和派生类都进行了申明,并没在基类前加virtual和没在派生类前加override,则在派生类中隐藏了基类中的方法。   

     class  HidBaseClass{

       public  int  HidMethod{

            return 0;

                                    }

                              }

 

     class  HidClass:HidBaseClass{

       public  new  int  HidMethod{

            return 0;

                                    }

                              }

 

 2.3 调用函数的基类版本

    使用base.<MethodName>()调用基类的相同方法。

2.4 抽象函数和抽象类

  把申明为abstract的函数或类称为抽象函数或类,派生形式同虚拟类。抽象函数不能实例化,必须在费抽象的继承类中重写。      

2.5密封类和密封方法

  C#允许把类和方法申明为sealed,对于类来说不允许继承于该类;对于方法来说,不允许重写该方法。要在方法或属性上使用sealed,必须先在基类上把它们申明为重写。

2.6 派生类中的构造函数

  在派生类的实例化过程中,派生类的构造函数调用-->基类的构造函数-->Object的构造函数,执行时的顺序则反过来。

2.7 修饰符

  a.可见式修饰符

  

 

  b.其它修饰符

 

2.8接口  

  不能实例化接口,只能包含其签名;接口不能有构造函数或字段。

 

 

posted @ 2010-01-30 15:05  zxg1982  阅读(333)  评论(2编辑  收藏  举报