簡體   English   中英

如何在java中調用抽象類方法

[英]How to call abstract class method in java

我想在我自己的類中調用抽象類的方法。 抽象類是:

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。 誰能告訴我如何解決這個問題?

首先, Call一個抽象類,因此不能直接實例化它。 你必須創建一個子類,比如MyCall extends Call ,它會覆蓋MyCall extends Call中的任何抽象方法。

獲取NullPointerException意味着您作為getCallFailedString()的參數getCallFailedString()任何內容尚未初始化。 因此,在創建Call的子類之后,您必須實例化它,然后將其傳遞給您的方法,如下所示:

class MyCall extends Call 
{ 
     //override any abstract methods here... 
}

無論你在哪里調用getCallFailedString() ,它都需要上面的東西,如:

Call cal = new MyCall();
Activity activity = new MyActivity();
activity.getCallFailedString(cal);

看起來Call cal在傳遞給函數getCallFailedString之前是null。 確保擴展Call並實例化擴展類並將其傳遞給getCallFailedString

確保您的對象“cal”已初始化且不為null。 此外,您將無法實例化Call對象(因為它是一個abstarct類)。 相反,將類Call聲明為接口並在您的類中實現其方法getEarliestConnection()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM