【发布时间】:2023-03-30 01:00:01
【问题描述】:
我有一个类,它调用一个对象的方法,该对象隐藏在继承它的类中(但新字段也是从 baseField 继承的),我需要调用此方法新字段,但是当我调用 childClass.doSomething() 时,我收到一个异常,说 baseField 为空。
我认为这是因为 baseClass 中的 baseField 正在被访问,尚未实例化但我不确定
当从 childClass 访问时,我怎样才能让 someMethod 使用 ExtendedBaseField
public abstract class baseClass{
protected BaseField baseField;
public void someMethod(){
baseField.doSomething()
}
}
还有一个继承它的类:
public class childClass : baseClass{
protected new ExtendedBaseField baseField = new ExtendedBaseField();
}
new childClass().someMethod(); //null pointer exception
ExtendedBaseField 继承 BaseField
【问题讨论】:
-
protected new ExtendedBaseField baseField是什么意思? -
@farukdgn 如果你的意思是类型前的 new 关键字,它是告诉编译器你隐藏了继承类中的字段
标签: c# inheritance polymorphism