c#--重写--重载--多态


一:重写是指重写基类的方法,在基类中的方法必须有修饰符virtual ,而在子类的方法中
必须指明override.
格式:
基类中:
public virtual void myMethod()
{}
子类中:
public override void myMethod()
{}
重写后,基类和子类对象访问myMethod()方法,结果都是子类重新定义后的方法,基类的方法相当
于被覆盖掉了。

二:重载
用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳成员来实施调用。

public void test(int x,int y ) {}

public void test(int x,ref y ) {}

public void test(int x,int y,string a ) {}

注:可考虑用泛型优化此用途。


三:多态性概述
当派生类从基类继承时,它会获得基类的所有方法、字段、属性和事件。若要更改基类的数据和行为,您有两种选择:可以使用新的派生成员替换基成员,或者可以重写虚拟的基成员。

使用新的派生成员替换基类的成员需要使用 new 关键字。如果基类定义了一个方法、字段或属性,则 new 关键字用于在派生类中创建该方法、字段或属性的新定义。new 关键字放置在要替换的类成员的返回类型之前。例如:

 

public class BaseClass
{
    public void DoWork() { }
    public int WorkField;
    public int WorkProperty
    {
        get { return 0; }
    }
}

public class DerivedClass : BaseClass
{
    public new void DoWork() { }
    public new int WorkField;
    public new int WorkProperty
    {
        get { return 0; }
    }
}

使用 new 关键字时,调用的是新的类成员而不是已被替换的基类成员。这些基类成员称为隐藏成员。如果将派生类的实例强制转换为基类的实例,就仍然可以调用隐藏类成员。例如:


 
DerivedClass B = new DerivedClass();
B.DoWork();  // Calls the new method.

BaseClass A = (BaseClass)B;
A.DoWork();  // Calls the old method.

 

 

 


 

posted on 2012-04-11 16:58 青蛙學堂 阅读(253) 评论(0)  编辑 收藏 引用 所属分类: Vs2008

只有注册用户登录后才能发表评论。
<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(8)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜