[英]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.