如何在子类中删除从父类继承的方法?



我有ChildClassA,ChildClassBChildClassC

它们都继承自ParentClass

如何为AB声明已经实现的method,但在C中不需要?

  1. ParentClass中的实现没有意义,因为我只需要它在AB中。

  2. c#不支持多重继承(如果这是我最好的选择)。

  3. 接口不能帮助我,因为我不能在那里实现一个方法。

您要寻找的是一种组合形式:

using System;

public class Program
{
public static void Main()
{
var a = new ChildA();
a.SomeMethod();

var b = new ChildB();
b.SomeMethod();

var c = new ChildC();
// c.SomeMethod(); Doesn't have SomeMethod
}
}
public class ParentClass
{
}
public class ChildA : ParentClass, IHavingSomeMethod
{
private readonly IHavingSomeMethod _sms;

public ChildA()
{
_sms = new HavingSomeMethodService(); // Have it injected instead!
}

public void SomeMethod() => _sms.SomeMethod();
}
public class ChildB : ParentClass, IHavingSomeMethod
{
private readonly IHavingSomeMethod _sms;

public ChildB()
{
_sms = new HavingSomeMethodService(); // Have it injected instead!
}

public void SomeMethod() => _sms.SomeMethod();
}
public class ChildC : ParentClass
{
}
public interface IHavingSomeMethod
{
void SomeMethod();
}
public class HavingSomeMethodService: IHavingSomeMethod
{
public void SomeMethod()
{
Console.WriteLine("SomeMethod");
}
}

Try it out

ParentClass继承

  • CommonClass

  • ChildClassC

CommonClass继承

  • ChildClassA
  • ChildClassB

CommonClass定义了method

最新更新