我有一个父班和许多子班。我想做的是在父类中调用一个方法,该方法也将在所有子类中执行,而不必分别引用它们。
类似这样的东西:
public class Parent
{
public static void SomeMethod(){}
}
//certain amount of child classes
public void MainMethod(){
Parent.SomeMethod(); //Gets executed in all children
}
答案 0 :(得分:0)
根据我从您的问题中得到的信息,您需要 child 类具有与父级相同的功能。在其他选项中,我认为您可以使用抽象类进行处理。只需在父类中调用一次该方法,其他子类也将执行该操作。
同样,它是灵活的,记住如果需要,可以在子类中重写该方法。请参见ChildB
的实现。
示例。
public abstract class FamilyBase
{
public virtual void DoChores(FamilyBase member)
{
Console.WriteLine("Doing Chores by: "+member);
}
}
public class Parent: FamilyBase
{
public Parent()
{
}
private List<FamilyBase> family=new List<FamilyBase>();
public void AddMember(FamilyBase member)
{
family.Add(member);
}
//send out chores
public void SendOutMessages()
{
if(family.Count>0)
{
foreach(var member in family)
{
member.DoChores(member);
}
}
}
}
public class ChildA:FamilyBase
{
public ChildA()
{
}
}
public class ChildB:FamilyBase
{
public ChildB()
{
}
public override void DoChores(FamilyBase member)
{
Console.WriteLine("I'm doing my homework first.");
base.DoChores(member);
}
}
发送来自父母的消息。
Parent par=new Parent();
parent.AddMember(new ChildA());
parent.AddMember(new ChildB());
parent.SendOutMessages();
输出:
Doing Chores by : Parent
Doing Chores by : ChildA
I'm doing my homework first.
Doing Chores by : ChildB