我正在尝试将父调用(比如 A)继承给我的子类(比如 B)。此外,我的父类由另一个类连接,所以简而言之,我的父类有一些 @Override
方法及其实现。此外,我的 Child 类与 Parent 类由相同的类连接,但实现不同。
问题是,当我尝试从父类触发任何操作时,它会检查子类而不是父类本身的响应。
我希望父类应该处理自己的操作,而子类应该处理自己的操作。是否可能或有什么方法可以实现?
希望您能解决我的问题。这都是关于继承和接口(interface)实现的。下面是我的代码示例:
父类:A
public class A extends AppCompatActivity implements VolleyJsonRespondsListener{
@Override
public void onSuccessJson(String response, String requestName) {
switch (requestName) {
case "abc":
CommonFunctions.showToastTest(context, "abc toast");
break;
}
}
子级:B
public class B extends A implements VolleyJsonRespondsListener {
@Override
public void onSuccessJson(String response, String requestName) {
switch (requestName) {
case "xyz":
CommonFunctions.showToastTest(context, "xyz toast");
break;
}
}
其中一个解决方案是这个,但我不想要这个
public class B extends A implements VolleyJsonRespondsListener {
@Override
public void onSuccessJson(String response, String requestName) {
switch (requestName) {
case "xyz":
CommonFunctions.showToastTest(context, "xyz toast");
break;
case "abc":
CommonFunctions.showToastTest(context, "abc toast");
break;
}
}
最佳答案
我认为您可以按如下方式更改代码:
// Don't need "implements VolleyJsonRespondsListener" because A already implemented it. So, just override onSuccessJson
public class B extends A {
@Override
public void onSuccessJson(String response, String requestName) {
if("xyz".equals(requestName)) {
// Child class expects "xyz". Handle it.
CommonFunctions.showToastTest(context, "xyz toast");
} else {
// requestName not expected by Child class. Delegate to parent via super.onSuccessJson();
super.onSuccessJson(response, requestName);
}
}
}
关于java - 为什么每当我在父类 - Android 中触发一个操作时,我的子类方法总是被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207504/