} public void y() { x(); }}public class B:A { public override void x() //提供x的实现 { } }或者public class A { public void x() { } public void y() { x(); }}public class B:A { public new void x() //提供x的实现 { } public new void y() { base.y(); x(); }}
这样也可以,哈哈using System;public class class1 { public static void Main() { B b=new B(); b.y(); A b2=new B(); b2.y(); A b3=new A(); b3.y(); Console.ReadLine(); }
} public class A { public void x() { Console.WriteLine("执行A:x"); } public void y() {
B b=this as B; if(b==null) x(); else b.x(); }}public class B:A { public void x() //提供x的实现 { Console.WriteLine("执行B:x"); } }
public class A { public virtual void x() { } public void y() { ... x(); ... }}public class B:A { public override void x() //提供x的实现 { } }
或者是: public abstract class A { public abstract void x() { } public void y() { ... x(); ... }}public class B:A { public override void x() //提供x的实现 { } }
{
public virtual void x()
{
}
public void y()
{
x();
}}public class B:A
{
public override void x() //提供x的实现
{
}
}或者public class A
{
public void x()
{
}
public void y()
{
x();
}}public class B:A
{
public new void x() //提供x的实现
{
} public new void y()
{
base.y();
x();
}}
{
public static void Main()
{
B b=new B();
b.y(); A b2=new B();
b2.y(); A b3=new A();
b3.y(); Console.ReadLine();
}
}
public class A
{
public void x()
{
Console.WriteLine("执行A:x");
}
public void y()
{
B b=this as B;
if(b==null)
x();
else
b.x(); }}public class B:A
{
public void x() //提供x的实现
{
Console.WriteLine("执行B:x");
}
}
public virtual void x()
{
}B:
public override void x()
{
//base.x() 如果需要执行 a.x 就加这个
}哥们java 转过来的吧,c# 不是全部函数默认都可以重写的
{
B b=this as B;
if(b==null)
x();
else
b.x(); }虽然是开个玩笑(其实跟虚函数的作用是一样的),但是上面这个代码测试过可用,不知道你理解了我是什么意思没?
{
public virtual void x()
{
}
public void y()
{
... x(); ...
}}public class B:A
{
public override void x() //提供x的实现
{
}
}
public abstract class A
{
public abstract void x()
{
}
public void y()
{
... x(); ...
}}public class B:A
{
public override void x() //提供x的实现
{
}
}
你所说的应该就是像qcny那样写。但是好像只有这样使用
B b=new B();
b.y();
这时候调用了调用派生类里的x()我的代码A里面y()是响应某事件的代码,它就直接调用了基类的x(),没法让它调用派生类里的x();要实现这样的功能是否要用到接口才能实现吗?