我有2个课程如下。
public absract class myAbstracClass{
//various methods and stuff.
}
public class myImplmentationOfAbstractClass extends myAbstractClass {
//just implments a call to the abstract class in the constructor.
//no extrac functionality is added in this instance.
}
在第三堂课中,我有一个方法
public class someFunctionality{//
//default constructor
public static void myMethod(myAbstractClass abc)
//do stuff with abc
}
然后在我的代码中调用此方法
public class doWork{
public static void main(){
//create my implmented class
myImplmentationOfAbstractClass myABC = new myImplmentationOfAbstractClass();
//send this class to my function
someFunctionality.myMethod(myABC);//this causes an NPE
}
}
我显然错过了一些东西,我在谷歌上找不到它。
现在我已经改变了我的方法来接受一个 myImplementationOfAbstractClass 对象。但这似乎很糟糕,因为我预计需要再次使用抽象类,并将其扩展为特定实例。
我是否会错误地处理这个问题,或者我不能将超类的子类发送到期望超类副本的方法?
提前致谢。
大卫。
编辑:
我只想对所有花时间回答的人表示感谢。你们都是对的。问题出在其他地方。
事实证明,在我的函数中,我声明了另一个“临时对象”,并且我以错误的顺序声明了它的成员......花了一段时间才找到那个!
再次感谢大家,写这个问题的过程和回答一样有帮助。大约在同一时间,我们都得出了相同的结论(我意识到这一点,就像你在我猜的回复中发布的那样)。