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

shi*_*229 7 java abstract-class

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

public abstract class Call {

    public Connection getEarliestConnection() {
         Connection earliest = null;

         ...

         return earliest;
    }    
} 
Run Code Online (Sandbox Code Playgroud)

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

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");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Yuu*_*shi 15

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

获得一个NullPointerException意味着你作为参数传入的任何东西都getCallFailedString()没有被初始化.因此,在创建Call的子类之后,您必须实例化它,然后将其传递给您的方法,如下所示:

class MyCall extends Call 
{ 
     //override any abstract methods here... 
}
Run Code Online (Sandbox Code Playgroud)

无论你在哪里打电话,getCallFailedString()都需要上面的东西,如:

Call cal = new MyCall();
Activity activity = new MyActivity();
activity.getCallFailedString(cal);
Run Code Online (Sandbox Code Playgroud)