如何在java中调用抽象类方法

时间:2012-01-04 05:27:28

标签: java abstract-class

我想在我自己的类中调用抽象类的方法。抽象类是:

public abstract class Call {

    public Connection getEarliestConnection() {
         Connection earliest = null;

         ...

         return earliest;
    }    
} 

我想调用上面的方法,调用类是:

public class MyActivity extends Activity {

    Connection c = new Connection();

    private void getCallFailedString(Call cal)
    {
        c = cal.getEarliestConnection();

        if (c == null) {
            System.out.println("** no connection**");
        } else {
            System.out.println("** connection");
        }
    }
}

每当我尝试运行上面的类时,它会在行c = cal.getEarliestConnection()上抛出NullPointerException。谁能告诉我如何解决这个问题?

3 个答案:

答案 0 :(得分:15)

首先,Call是一个抽象类,因此你无法直接实例化它。您必须创建一个子类,比如说MyCall extends Call,它会覆盖Call中的任何抽象方法。

获取NullPointerException意味着您作为[{1}}的参数传入的任何内容都尚未初始化。因此,在创建Call的子类之后,您必须实例化它,然后将其传递给您的方法,如下所示:

getCallFailedString()

无论你在哪里打电话class MyCall extends Call { //override any abstract methods here... } ,都需要上面的内容,如:

getCallFailedString()

答案 1 :(得分:1)

Call cal传递到函数getCallFailedString之前,看起来Call为空。确保扩展getCallFailedString并实例化扩展类并将其传递给{{1}}。

答案 2 :(得分:-2)

确保您的对象“cal”已初始化且不为null。此外,您将无法实例化Call对象(因为它是一个abstarct类)。相反,将类Call声明为接口并在您的类中实现其方法getEarliestConnection()。