The Perfect Day

分享技术,编写未来

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
重载:(2必须1可以)           方法名必须相同 
                                           参数列表必须不相同
                                           返回类型可以不相同

覆写:(3相同)                     方法名必须相同
                                          参数列表必须相同
                                          返回类型必须相同

若要在派生类中使用基类的方法:则使用base关键字,例:base.方法名()
 
virtual                                      virtual
override(覆写)                      new(不覆写)

abstract抽象方法:1、必须是被派生类覆写的方法
                                2、可以看成是没有实现体的方法
                                3、若类中包含抽象方法,则类必须定义为抽象类,不论是否还包含其他方法
例:
 class classA
        {
            
public virtual void Func()
            {
                Console.WriteLine(
"FuncA()");
            }
        }
        
class classB : classA
        {
            
public new void Func() //new表示不覆写,调用类A中的方法
            {
                Console.WriteLine(
"FuncB()");
            }

            
//public override void Func() //override表示覆写,调用类B中的方法
            
//{
            
//    Console.WriteLine("FuncB()");
            
//}
        }

        
static void Main()
        {
            classA aa 
= new classA();
            aa.Func();
//FuncA()
            classB bb = new classB();
            bb.Func();
//FuncB()

            classA cc 
= new classB();
            cc.Func();
//FuncA();
        }

class classA
        {
            
public virtual void Func()
            {
                Console.WriteLine(
"FuncA()");
            }
        }
        
class classB : classA
        {
            
//public new void Func() //new表示不覆写,调用类A中的方法
            
//{
            
//    Console.WriteLine("FuncB()");
            
//}

            
public override void Func() //override表示覆写,调用类B中的方法
            {
                Console.WriteLine(
"FuncB()");
            }
        }

        
static void Main()
        {
            classA aa 
= new classA();
            aa.Func();
//FuncA()
            classB bb = new classB();
            bb.Func();
//FuncB()

            classA cc 
= new classB();
            cc.Func();
//FuncB();
        }
posted on 2006-11-09 11:31  StephenJu  阅读(309)  评论(0编辑  收藏  举报