Java接口通过调用同一接口访问不同的类
我想以一种方式使用java接口,在我的另一个类中调用定义接口的方法,如“private SoapURL SoapURL;”并且,我可以访问任何类的方法,例如:我想使用登录:-Java接口通过调用同一接口访问不同的类,java,class,oop,interface,Java,Class,Oop,Interface,我想以一种方式使用java接口,在我的另一个类中调用定义接口的方法,如“private SoapURL SoapURL;”并且,我可以访问任何类的方法,例如:我想使用登录:- private SoapURL soapURL; SoapUrl = LoginSoap (); String nameSpace = soapURL.getMethodName(); String url = soapURL.getUrl(); 有没有办法做这样的事。很抱歉,我对面向对象的原则不是很在行,但如果我的问
private SoapURL soapURL;
SoapUrl = LoginSoap ();
String nameSpace = soapURL.getMethodName();
String url = soapURL.getUrl();
有没有办法做这样的事。很抱歉,我对面向对象的原则不是很在行,但如果我的问题有解决方案,我想知道。提前谢谢
public interface SoapURL {
public String getNameSpace();
public String getUrl();
public String getSoapAction();
public String getMethodName();
public String getTag();
}
登录OAP类
public class LoginSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserControl";
}
@Override
public String getMethodName() {
return "UserControl";
}
@Override
public String getTag() {
return "Login Activity";
}
}
public class SignUpSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserRegister";
}
@Override
public String getMethodName() {
return "UserRegister";
}
@Override
public String getTag() {
return "SignUp Activity";
}
}
public class ResetPasswordSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserPasswordReset";
}
@Override
public String getMethodName() {
return "UserPasswordReset";
}
@Override
public String getTag() {
return "Forget Password Activity";
}
}
SignUpSoap类
public class LoginSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserControl";
}
@Override
public String getMethodName() {
return "UserControl";
}
@Override
public String getTag() {
return "Login Activity";
}
}
public class SignUpSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserRegister";
}
@Override
public String getMethodName() {
return "UserRegister";
}
@Override
public String getTag() {
return "SignUp Activity";
}
}
public class ResetPasswordSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserPasswordReset";
}
@Override
public String getMethodName() {
return "UserPasswordReset";
}
@Override
public String getTag() {
return "Forget Password Activity";
}
}
重置密码SOAP类
public class LoginSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserControl";
}
@Override
public String getMethodName() {
return "UserControl";
}
@Override
public String getTag() {
return "Login Activity";
}
}
public class SignUpSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserRegister";
}
@Override
public String getMethodName() {
return "UserRegister";
}
@Override
public String getTag() {
return "SignUp Activity";
}
}
public class ResetPasswordSoap implements SoapURL {
@Override
public String getNameSpace() {
return "https://host.com/MobileWFC/";
}
@Override
public String getUrl() {
return "https://host.com/MobileWFC/MobileWS.asmx";
}
@Override
public String getSoapAction() {
return "https://host.com/MobileWFC/UserPasswordReset";
}
@Override
public String getMethodName() {
return "UserPasswordReset";
}
@Override
public String getTag() {
return "Forget Password Activity";
}
}
例如,只需执行以下操作:
SoapURL example = new LoginSoap();
String a = example.getTag();
a
应等于“登录活动”
您的实现看起来是正确的。要使用它,您可以在main中执行以下操作:
SoapURL reset = new ResetPasswordSoap();
System.out.println(reset.getUrl());
这是一种在大型系统中最小化耦合的方法。并通过为一起工作的对象组使用公共接口来减少对象之间的依赖性。您可能对面向对象原则还不熟悉,但您已经领先游戏一步了
要将其传递给函数,请执行以下操作:
public JPanel resetPass(SoapURL reset) {
...
}
// In main:
JPanel resetPassPanel = resetPass(reset);
接口的主要用途是多态性,或执行相同操作的能力
对多个不同对象的操作,
这正是您在场景中想要的
你的方法非常好,只是需要修改一下
private SoapURL soapURL;
//SoapUrl = LoginSoap (); // This line should be replaced with the Below line
soapURL=new LoginSoap();
String nameSpace = soapURL.getMethodName();
String url = soapURL.getUrl();
由于LoginSoap
,SignUpSoap
,ResetPasswordSoap
类是SoapURL接口
的实现类,因此SoapURL的引用变量可以存储这些子类中任何一个的对象
soapURL=new LoginSoap();//soapURL.someMethod will call method of LoginSoapClass
soapURL=new SignUpSoap();// will call method of SignUpSoap class
soapURL=new ResetPasswordSoap();
您当前的代码是什么?您的具体问题在哪里?您的接口看起来都是正确的。您是否想编写一段代码来确定应该使用哪种实现?我已经给出了上面的代码,我只是想知道是否可以通过调用接口访问类数据。。比如soupur=LoginSoap();大于soapUrl.getUrl()的值;将更改为LoginSoap ClassYes,有什么问题吗?你能做到,怎么做到?你能给我举个例子或者给我指出任何教程的链接吗