Oop 抽象类和方法

Oop 抽象类和方法,oop,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 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()。怎样才能做到呢


谢谢

将abstract关键字从另一个方法中去掉,并在基类中提供一个默认实现

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

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

如果您不打算在给定的实现中支持另一个方法,您仍然必须在类中公开该方法,但与这里的类似,您通常会抛出一个
NotSupportedException
。对于
void
方法,您可以简单地返回(不执行任何操作)

最后,如果您想区分同时具有两种方法和只有一种方法的对象,可以使用接口

public interface IBase
{
    string GetString();
}

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

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

为什么?显然,derivedClass继承了
基类
的所有特性,因此它应该实现
基类
的所有特性。将基类拆分为两个类感谢jay,,,我明白你的意思了。实际上,我只是想弄清楚OOPs上是否有任何关键字或默认功能可用。在派生类中不需要像虚方法这样的方法来实现。同样,我们可以用abstract方法做这样的事情吗?@Amit您可以通过声明成员
virtual
,在抽象类中拥有默认功能,而默认功能可能是什么都不做。然后,如果需要,只在派生类中重写和实现它;这不是必需的。但由于某些情况,我只能在基类中给出签名。谢谢你的回复todd。我喜欢你的ideaPlus 1多接口。还要考虑一下。