[英]How to access method in base class from child class in java
如何從子類訪問父類的方法? 以下是我的課程實現:
public interface BaseUrl {
public String getNameSpace();
public String getUrl();
}
BaseSoapUrl類:
public class BaseSoapUrl implements BaseUrl {
@Override
public String getNameSpace() {
return "https://host.com/AndroidWFC/";
}
@Override
public String getUrl() {
return "https://host.com/AndroidWFC/MobileWS.asmx";
}
}
SoapURL接口:
public interface SoapURL {
public String getSoapAction();
public String getMethodName();
}
LoginSoap類:
public class LoginSoap extends BaseSoapUrl implements SoapURL {
@Override
public String getSoapAction() {
return "https://host.com/AndroidWFC/UserControl";
}
@Override
public String getMethodName() {
return "UserControl";
}
}
為了簡化代碼,我想像這樣實現它們。 以前是這樣的:
public interface SoapURL {
public String getNameSpace();
public String getUrl();
public String getSoapAction();
public String getMethodName();
}
LoginSoap類:
public class LoginSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/AndroidWFC/";
}
@Override
public String getUrl() {
return "https://host.com/AndroidWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/AndroidWFC/UserControl";
}
@Override
public String getMethodName() {
return "UserControl";
}
}
我可以訪問以下這些方法:
private SoapURL soapURL = new LoginSoap();
String static final url = soapURL.getUrl();
現在返回值的形式為public String getNameSpace();
和public String getUrl();
所有兒童班級都一樣; 那么為什么要一次又一次地編寫代碼。 由於正在使用Web服務,將有許多類將實現SoapURL接口。
所以我的問題是如何通過soapURL
訪問BaseSoapUrl
方法?
您可以將SoapURL
接口SoapURL
為一個abstract class
,可以在其中提供getNameSpace()
和getUrl()
方法的一些通用實現, 而將其他方法保留為abstract
類,這樣子類將被迫提供為他們實施。
public abstract class SoapURL {
public String getNameSpace() {
return "https://host.com/AndroidWFC/";
}
public String getUrl() {
return "https://host.com/AndroidWFC/MobileWS.asmx";
}
public abstract String getSoapAction();
public abstract String getMethodName();
}
我認為您的重構不正確。 如果您認為SoapUrl必須具有getNameSpace(),則在接口中定義getNameSpace()方法。 如果重構的目的是始終為某些SoapUrl方法返回相同的值,那么我建議您遵循以下組織:
public interface SoapUrl {
String getNameSpace();
String getUrl();
String getSoapAction();
String getMethodName();
}
public abstract class BaseSoapUrl implements SoapUrl {
@Override
public String getNameSpace() {
return "https://host.com/AndroidWFC/";
}
@Override
public String getUrl() {
return "https://host.com/AndroidWFC/MobileWS.asmx";
}
}
public class LoginSoap extends BaseSoapUrl {
@Override
public String getSoapAction() {
return "https://host.com/AndroidWFC/UserControl";
}
@Override
public String getMethodName() {
return "UserControl";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.