java - 为什么每当我在父类 - Android 中触发一个操作时,我的子类方法总是被调用?

标签 java android inheritance interface

我正在尝试将父调用(比如 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/

相关文章:

java - 从 Java Web 服务启动外部进程的最佳方式?

文件 I/O 期间 Java 扫描仪出现未知来源异常

scala - 从具有参数化类型参数的另一个方法调用具有参数化类型参数的方法时,保留特定结果类型参数

c# - 用c#实现Java RSA解密和加密

java - 只是想知道我的 ListView 是否将用户引导到每个项目的新屏幕单击

android - Cordova : How to check if File API works?

android - ExoPlayer 2 迁移

java - 列表 Activity 中的操作栏

javascript - 从另一个实例更新实例的属性

Java仅返回父类(super class)的属性