c#抽象和子类中的委托
本文关键字:子类 抽象 | 更新日期: 2023-09-27 17:52:52
我正在为公司编写假期控制程序(只是学习,不认真)。现在我有了一个名为Employee的抽象类。员工的4个阶段
每个人都有自己的类:
- NormalWorker
- SubjectAreaLeader
- ChefHumanResourceOfficer CEO
Normal Worker可以请求休假,SAL可以说ok或拒绝请求。如果他同意,就交给CHRO。他可以否决也可以通过。CEO是最后一个可以否决它的人。
所有类都继承抽象类。抽象类有一个名为
的委托public delegate void applyVacations(Vacation what_vacations, bool pass_or_deny)
所有子类都有一个方法
void apply(Vacation what_vacation, bool pass_or_deny)
除了NormalWorker。并且子类的构造函数应该将这个apply方法推送给委托。
通过休假请求对所有实例都是最终的。
的例子:
namespace ex
{
public abstract class A
{
public delegate void foo();
public A()
{ }
}
class B : A
{
public B()
{
A.foo = childfoo; // Does not work
}
public void childfoo()
{/* Do something*/}
}
}
问候
您需要创建一个类型为foo
的变量,然后将childfoo
分配给它,如下所示:
private foo _handler;
public B()
{
// Assign our handler for the foo delegate.
_handler = childfoo;
// Now we can call it.
_handler();
}
foo是一个委托所以它是一个类型
在B构造函数中,你应该写则可以调用handler()
namespace ex
{
public abstract class A
{
public delegate void foo();
public A()
{ }
}
class B : A
{
private foo handler;
public B()
{
handler = childfoo;
}
public void callHandlerHere()
{
handler();
}
public void childfoo()
{/* Do something*/}
}
}
这是课程的一个例子
B b = new B();
b.callHandlerHere() // all object inheriting A can habe a callHandlerHere function for exemple