抽象类和方法

时间:2011-11-09 04:34:10

标签: oop

我有抽象类

Public class Abstract baseClass
{
     public abstract string GetString();
     public abstract string GetString1();
}

public class DerivedClass : baseClass
{
      public override string GetString()
        {
            return "test data";
        }

    public override string GetString1()
    {
        throw new NotImplementedException();
    }
}

在上面的代码行中,我必须在派生类中实现这两个抽象方法。但由于某些原因我不想实现所有方法,只有其中一个方法只有GetString()。怎么办呢?

由于

3 个答案:

答案 0 :(得分:1)

通常,如果您没有实现所有抽象方法,那么您的新类也是一个抽象类。要获得具体的类,您需要实现所有方法。如果您只想要/需要实现方法的子集,请考虑使用多个接口(一个接口使用GetString,另一个接口使用GetString1)而不是抽象类。然后,您可以使用要在类中使用的方法实现接口。

答案 1 :(得分:1)

如果DerivedClass将为其他类提供通用功能,则可以将其标记为抽象,在此处实现其中一种方法,然后继承者只需实现其余的方法。

如果您不打算在给定的实现中支持其他方法,您仍然需要在类中公开该方法,但与此处的方法类似,通常会抛出NotSupportedException。对于void方法,您只需返回(不执行任何操作)。

最后,如果你想分离出既有方法又有只有一种方法的东西,你可以使用接口。

public interface IBase
{
    string GetString();
}

public interface IBasePlus : IBase
{
    string GetStringPlus();
}

您可以拥有一个实现IBasePlus的类,但是您可以将此提供给采用IBase类型参数的方法,在这种情况下,您将看不到额外的方法。

答案 2 :(得分:0)

将abstract关键字从其他方法中删除,并在基类

中提供默认实现