我不确定这是否可行,但我希望能够让父类可以看到基类的字段/方法。
比方说,我有一个班级:
public class ExampleFile
{
private Stream _stream;
private long _baseoffset;
public ExampleFile(Stream input)
{
_stream = input;
_baseoffset = input.Position;
}
public void SeekTo(long offset)
{
_stream.Seek(offset + _baseoffset, SeekOrigin.Begin);
}
}
然后我将该类用作另一个类的基础:
public class ExampleClass : ExampleFile
{
public ExampleClass(Stream input)
: base(input)
{
}
public byte[] GetSomething()
{
byte[] id = new byte[5];
SeekTo(2);
base._stream.Read(id, 0, 5);
return id;
}
}
有什么方法可以让ExampleFile
的字段/方法仅对ExampleClass
可见?
答案 0 :(得分:9)
在要向子类公开的字段/属性/方法上使用protected
修饰符而不是public / private。
public class ExampleFile
{
protected Stream _stream; // no longer private, so the inherited
protected long _baseoffset; //classes can access them
public ExampleFile(Stream input)
{
_stream = input;
_baseoffset = input.Position;
}
public void SeekTo(long offset)
{
_stream.Seek(offset + _baseoffset, SeekOrigin.Begin);
}
}
答案 1 :(得分:1)
基类是什么意思?在您的情况下,基类应该是父类!如果您希望某个类的成员可以访问其后代之一,请使用protected
修饰符。如果您希望子类的成员可以访问其父类,请通过 getter 执行此操作。