public class bas
{
public virtual void fn1()
{ .....
}
}public class test
{
public test()
{
B.fn=fn2 //想用fn2替代bas.fn1方法 要怎么修改才正确?
}
public bas B
public void fn2()
{}
}
{
public virtual void fn1()
{ .....
}
}public class test
{
public test()
{
B.fn=fn2 //想用fn2替代bas.fn1方法 要怎么修改才正确?
}
public bas B
public void fn2()
{}
}
解决方案 »
- Unity3D 游戏制作
- 如何给DataGridview最后一行加上合计或者统计行呢?统计总金额?
- c# listbox往treeview 进行节点拖拽时treeview 节点高亮显示问题,着急啊!!!
- 链接服务器提示登陆失败
- socket编程求救
- c# winform textBox下面的下拉框是如何制作的? 如ie浏览器的搜索栏.
- sql error1001在与网络相关的或特定于实例的错误为找到活无法访问服务器
- 能不能帮我把这几句翻译成C#语言
- 桌面开发 暴风看电影 这样的界面是什么技术实现的?
- C#中使用sdk
- File.Exists判断远程共享目录下的文件。
- 窗体由Maximized(最大化)变成Normal的事件怎么触发,不用sizechanged
class test
{
static void Main(string[] args)
{
bas one = new Inherited();
one.fn1();
}
} public class bas
{
public virtual void fn1()
{
}
} public class Inherited :bas
{
public override void fn1()
{
} }面向对象的多态
一、类
class OneClass
{
public delegate void MethodHandler();
public MethodHandler Function; public OneClass()
{
this.Function = new MethodHandler(this.OriginalMethod);
} private void OriginalMethod()
{
Console.WriteLine("This is the original method.");
}
}
二、准备替代用的方法(在Program类里)
private void AnotherMethod()
{
Console.WriteLine("This is another method.");
}
三、运行时替换掉方法
OneClass a = new OneClass();
a.Function();a.Function = new OneClass.MethodHandler(new Program().AnotherMethod);
a.Function();
四、结果:
This is the original method.
This is another method.