让我们说我有一个代表Stream
的类,并且我将这个类子类化为添加读写方法。这两种方法在两个独立的接口IWriteableStream
和IReadableStream
中定义。
public class MyFooStream : Stream, IWriteableStream, IReadableStream
如何强制从Stream
创建子类的开发人员实现接口,以便强制执行所有Stream
必须可读和可写的想法?
编辑:所以我的解决方案是让Stream
抽象并实现这两个接口。然后在Stream
中将接口方法标记为抽象,从而强制子类实现它们。
public abstract class Stream : IWriteableStream, IReadableStream
{
public abstract void WriteToStream();
public abstract void ReadFromStream();
}
public class WaterStream : Stream
{
public override void WriteToStream() {}
public override void ReadFromStream() {}
}
答案 0 :(得分:4)
让MyFooStream
成为一个抽象类,然后实现'抽象类上的那些方法作为抽象方法 - 所有派生类都必须具有这些方法的实现。
答案 1 :(得分:2)
如果接口方法在基类中实现,那么Stream
的任何派生都将继承这些,因此已经实现了IWritableStream
/ IReadableStream
。
如果您想强制他们覆盖默认行为,那么您可以将read
/ write
方法抽象化(或者如果需要则整个类)。< / p>
示例强>
public class MyFooStream : Stream, IWritableStream, IReadableStream
{
public abstract void Write(byte[] data);
public abstract byte[] Read();
}
// if I don't override Write/Read methods the compiler will complain
public class ReadableStream : MyFooStream
{
public override void Write(byte[] data)
{
...
}
public override byte[] Read()
{
...
}
}