我有如下两节课。

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

    }

    }

我显然缺少了一些东西,并且在Google上找不到。

现在,我已更改方法以接受myImplementationOfAbstractClass对象。 但这似乎是不好的新消息,因为我希望再次使用抽象类,并将其扩展到特定实例。

我是在错误地处理此问题,还是不能将超类的子类发送给需要超类副本的方法?

提前致谢。

大卫。

编辑:

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

事实证明,在我的函数中,我声明了另一个“临时对象”,并且以错误的顺序声明了它的成员……花了一段时间才找到它!

再次感谢大家,写问题的过程与回答一样有帮助。 大约在Sime时刻,我们都得出了相同的结论(我意识到,就像您在张贴我猜测的答复时一样)。

#1楼 票数:1 已采纳

您的方法myMethod错误。
此代码

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

不能扔NPE

#2楼 票数:1

您提供的代码片段没有问题,导致空指针异常的原因还有其他……可能是如果您检查堆栈跟踪信息,或者您可以准确地确定引起问题的行,则可以更好地帮助您确定问题。

#3楼 票数:1

第一个猜测:您的问题出在别处:如果将实参类型假定为实作的超类或接口,则将实作作为实参提供是没有错的。

#4楼 票数:0

我刚刚意识到其中具有该功能的类无法正确构建,因此NPE是由于该方法所致,这是由于我在使用变量之前未将变量设置为null的愚蠢!

因此,对所有愿意回答的人+1。 我意识到这一点,就像你们在写作一样。

  ask by DaveM translate from so

未解决问题?本站智能推荐:

1回复

抽象类/方法的实现

我应该用一个抽象方法computeIntt()设计一个BankAcct类。 保存和时间属于BankAcct。 问题是我无法实现兴趣和新余额的显示 这是我当前的代码: MainPr将为以下数据实例化两个对象:保存的帐号为1234; ABC的帐户名称; 余额为10,000。 时间账
3回复

抽象类中的可选方法实现

我正在研究一些框架,我得到了一个抽象类,应该实现它。 现在我得到了一些用户应该能够配置的其他东西,但它是可选的。 而不是抽象方法: 我想只是检查接口实现: 因此,如果有人使用接口Log实现AbstractModule,它也会显示消息。 我看到的实现者的好处是:她不需要关心实现l
5回复

Java抽象类和接口方法的实现

如果您有一个具有3个方法(x(),y()和z())的接口(位置),并且还具有一个抽象类,则可以将其称为Shape。 Shape实现了Position,并且仅将代码提供给x()和y()。 编译器是否暗中猜测z()是抽象方法?
3回复

在抽象类中实现接口方法

我有一个具体的类,它扩展了一个抽象类,而后者又扩展了一个抽象类。 这个顶级类实现一个接口。 我可以在顶级抽象类中实现接口方法,以便不必具体的子类吗? 另外,如果接口方法采用对象类型作为参数,那么我可以让顶层抽象类中的实现采用另一种类型(对我来说似乎正确),还是我必须使用完全相同的方法签名
2回复

抽象类的抽象方法的部分实现

我有一个抽象类,称为MyAbstractClass 。 我有5个不同的类对其进行扩展:类A,B,.. E 我需要在类MyAbstractClass中添加方法foo() ,但只有A,B和C可以实现它,而D和E则永远不需要执行它。 (程序流不会到达那里) 在Java中,实现此行为的最佳
2回复

当抽象类实现接口方法时,这些方法是否与该抽象类的常规方法相同?

好的,我试图了解抽象类如何处理接口的已实现方法。 假设我们有一个抽象类,它实现了一个接口的 3 个方法,我们将在另一个类中初始化这个抽象类,我们只需要实现这些接口方法中的一个。 它完美地工作我只是想了解java如何在抽象类被初始化的地方重新覆盖接口方法。 我只想知道这整个事情是如何运作的。
4回复

抽象类和方法,为什么呢?

希望任何人都可以提供帮助,我正在学习Java,并且与本论坛的其他人一样,我想我也是编程的新手。 我遇到了有关抽象类和方法的一章,但是并没有真正完全理解它们的用途以及原因,并认为我会从经验丰富的程序员那里得到解释。 在本书的帮助下,我下面一直在研究示例代码,我不确定的是为什么在Dims类中
1回复

如何使用抽象类并实现它们

我不确定我能多么雄辩地真正解释自己不理解/需要的帮助,我还是面向对象编程的新手。 这是关于我的课程的,我不希望有人为我做,我只需要帮助您了解如何继续前进,即使我走上正确的道路。 好的,接下来我的问题。 基本上,我试图创建一个数组列表,该数组列表将容纳一些本身具有大量信息的对象(显然),我