天下無雙
阿龍 --质量是流程决定的。

抽象方法
    抽象类中才有的方法,要求派生类必须重载这个方法;

  定义方式:    

Code

   注:抽象类中才能有抽象方法,抽象方法必须重写(override).有点类似C++中的纯虚方法.

 

虚方法

    告诉编译器,这个方法可以重写。
    当基类的方法与派生类的方法重名时,
    可以选择派生类的方法从基类继承并重写(override), 还是,把基类的方法隐藏起来(hide)。

定义方式:

 

Code

 

以上为类的创建方式,下面给出调用方式及上例输出结果:

1.抽象方法

抽象类中抽象方法重写

 

 说明:父类是抽象类,所以不能构造父类的对象(myclass mc=new myclass()); 而只能用父类来修饰子类对象,

这样同样可以调用到子类对象的方法.

 

2.虚方法

Code

 

 说明:   如果用类C修饰DC对象:

     C dcClass2 = new DC();
            dcClass2.method(); //调用C中的method(),输出(C Method!)
            Console.WriteLine("=============");

 

总结:

重写时,访问父类,子类皆调用子类的重写方法;--其中抽象方法属于重写
隐藏时,访问父类则调用父类的方法,子类则调用子类的方法。--隐藏一般需要new关键字,否则有警告信息.

虚方法:

1.virtual方法表示此方法可以被重写, 也就是说这个方法具有多态.父类中的方法是通用方法,可以在子类中重写以重新规定方法逻辑.

2.virtual方法可以直接使用,和普通方法一样

3.不是必须重写的. 子类可以使用base.方法 的方式调用, 无论有没有在子类使用override去重写

总之:virtual关键字只是明确标示此方法可以被重写, 其实它和一般的方法没有什么区别 .

关于关键字的使用:

基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.

如果基类没有virtual,刚派生类不能使用override,只能使用new,表示隐藏基类方法.

 

 

虚方法和抽象方法的区别:

1.虚方法可以有实现体,抽象方法不能有实现体。

2.抽象方法
    要求派生类必须重载这个方法; 

posted on 2009-11-02 00:18  阿龍  阅读(405)  评论(0编辑  收藏  举报