java类,扩展外部API功能

标签 java methods extends

我有一个带有类“A”和本地类“B”的外部 API(我无法修改它),它覆盖了“A”的方法并添加了一个附加功能。 我需要根据一些参数“is_A”使用其中之一。

/------ API (A.java) -----/

package A;

public class A {

    public int pingA( int value ) {

        return value;

    }

}

/------我的类(class)(B.java)-----/

package B;

import A.*;

public class B extends A {

    @Override
    public int pingA( int value ) {
        return value;
    }

    public int pingB( int value ) {
        return value;
    }

    public static void main(String[] args) {
        final boolean is_A = false;
        A obj;
        if (is_A) {
            obj = new A();
        } else {
            obj = new B();
        }
        if (!is_A) {
            int n = obj.pingB(3);
        }
    }
}

在这种情况下,我想使用类“B”,但命令“int n = obj.pingB(3);”未编译,因为 A 中没有方法 pingB。 确切的信息是:

cannot find symbol
symbol: method pingB(int)
location: class A.A

最佳答案

您在父类(super class)中不存在的子类中添加了一个新方法。无法使用对父类(super class)的引用来调用子类中的新方法。您必须转换为子类类型才能使用新方法。

你可以这样做:

A obj = new B();

if (obj instance of B) {
   B b = (B)obj;
   int n = b.pingB(3);
}

这里 BAA 不是 B 所以它没有 pingB (int) 方法。

关于java类,扩展外部API功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2024695/

相关文章:

java - 比较 Java 中 vector 和数组之间的功能

java - 特定表的 jooQ 代码生成

java - 在android中创建一个空的ArrayList

python - 简单问题 - NoSuchElementException 和 WebDriverException 在此函数中意味着什么?

java - 从 Java 程序写入服务器上的 txt 文件时出现问题

java - 为什么驱动程序在类中找不到方法?

javascript - 下拉 Javascript 错误 : object doesn't support property or method 'matches'

java - 为什么扩展抽象类的类中的方法即使没有被调用也会运行?

java - 在 Java 接口(interface)中声明参数子类型,在 Java 实现方法中使用子类型

java - 解决JAVA父接口(interface)中缺少构造函数