java - 为什么每当我在父类 - Android 中触发操作时,我的子类方法总是被调用?
问题描述
我正在尝试将父调用(例如 A)继承给我的子类(例如 B)。此外,我的父类与另一个类接口,因此,简而言之,我的父类有一些@Override
方法及其实现。此外,我的 Child 类与 Parent 类的接口相同,但实现不同。
问题是,当我尝试从 Parent 类触发任何动作时,它会检查来自 Child 类而不是 Parent 类本身的响应。
我希望 Parent 类应该处理它自己的动作,而 Child 类应该处理它自己的动作。有可能还是有什么方法可以实现?
我希望你有我的问题。这都是关于继承和接口实现的。下面是我的代码示例:
家长班: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);
}
}
}
推荐阅读
- html - 如何覆盖 CSS 文件的链接 scss
- angular - 未涵盖声纳覆盖角度单元测试
- angular - 页面加载角度
- oracle - 使用 Oracle dbms_json 解析 json 数组的字符串
- multithreading - 多进程的进程间通信
- asp.net-core - 在 IIS 上的 ASP.NET Core 中为 Windows 身份验证配置 Kerberos
- git - 我不确定我的本地存储库是否处于正确的状态以推送到我的远程
- angular - 未拾取 ActivatedRoute 参数
- c# - 对“MarshalByRefObject”类型的引用声称它是在“System.Runtime”中定义的,但找不到
- aws-lambda - 失败:ValidationException:检测到 1 个验证错误:“tableName”处的值“[object Object]”未能满足约束