抽象类,将实现发送到方法

时间:2012-09-17 12:41:39

标签: java abstract

我有两个课程如下。

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对象。但这看起来很糟糕,因为我希望再次使用抽象类,并为特定实例扩展它。

我是否正确地解决了这个问题,或者我是否可以不将超类的子类发送到期望超类副本的方法?

提前感谢。

大卫。

编辑:

我只想感谢所有花时间回答的人。你们都是对的。问题出在其他地方。

事实证明,在我的职能范围内,我正在宣布另一个“临时对象”,并且我宣布其成员处于错误的秩序......花了一段时间找到那个!

再次感谢大家,写这个问题的过程与回复一样有用。我们都得到了相同的结论,大约是在sime时间(我意识到这就像你在哪里发布回复一样)。

4 个答案:

答案 0 :(得分:1)

您的方法myMethod出错 这段代码

myImplmentationOfAbstractClass myABC = new myImplmentationOfAbstractClass();
someFunctionality.myMethod(myABC);//this causes an NPE  

不能'抛出NPE

答案 1 :(得分:1)

  

您提供的代码片段没有任何问题,空指针异常的原因是其他的...可能是您检查堆栈跟踪或者您是否可以准确识别导致问题的行,它会更好帮助确定问题。

答案 2 :(得分:1)

首先猜测:你的问题出在其他地方:如果参数类型应该是实现的超类或接口,那么将实现作为参数提供是没有错的。

答案 3 :(得分:0)

我刚刚意识到具有该功能的类没有正确构建,所以NPE是由于我在使用它之前没有将变量设置为null的愚蠢而导致的方法! / p>

所以那些打扰回答的人都要+1。我意识到这就像你们写作的那些人一样。