java - 在父类(super class)中调用父类(super class)方法

标签 java inheritance overriding subclass superclass

我找不到一个好的总结来描述我的问题(欢迎提出建议)

我有以下两个类:

测试 1

import java.lang.reflect.Method;

abstract class Test1 {

    boolean condition = true;

    public void f() {
        System.out.println("Test1 : f");
    }

    public void g() {
        System.out.println("Test1 : g");
        f();
        if (condition) {
            f(); // call Test1.f() here. HOW?

            // Following didn't work
            try {
                Method m = Test1.class.getDeclaredMethod("f");
                m.invoke(this);
            } catch (Exception e) {
                System.err.println(e);
            }
        }
    }
}

测试2

class Test2 extends Test1 {

    public void f() {
        System.out.println("Test2 : f ");
    }

    public static void main(String[] args) {
        Test2 t2 = new Test2();
        t2.g();
    }

}

输出是:

Test1 : g
Test2 : f
Test2 : f
Test2 : f

问题是由于 Test1 中的 condition 字段给出的一些特殊条件,我想调用 Test1f ()g() 中,即使我正在使用 Test2 的对象进行调用。

我尝试了反射,但它也不起作用。有什么建议吗?

编辑 1: 我没有具体提到它,但如果你仔细看,Test1 是抽象的。所以我无法创建它的对象。

最佳答案

您应该认真考虑要构建的逻辑。您尝试覆盖子类中的方法 f 的原因肯定有其背后的原因。

或者,您可以将 boolean 值作为方法 f 的返回值,并在子方法中使用 boolean r = super.f(); if(r){//执行子逻辑。这应该可以解决您的问题。

关于java - 在父类(super class)中调用父类(super class)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358012/

相关文章:

java - 我们可以显式调用垃圾收集器吗?

java - 可怕的 : intellij no executable code found at line error

java - 从 JSON 对象填充 JTable

python - 解析 Python 类中的菱形继承(钻石问题)

javascript - Javascript 中的继承 - 原型(prototype)不在定义部分?

c++ - 用C++实现自然动态矩阵

使用继承时 CSS 重写

java - Cisco Webex API 异常

html - 不能用 ! 覆盖内联样式重要属性(property)?

c# - 如何在基类对象上调用子类方法?