【问题标题】:Call non-superclass method on class在类上调用非超类方法
【发布时间】:2019-04-02 17:39:17
【问题描述】:

我有扩展 A 的类 B。我声明 A 的对象并将其初始化为 B。我想调用不在超类中的方法。

有简单的方法吗? 还是我每次都需要施法?

A 类 // 无权访问它。

Class B extends A {
    methodNotInClassA();
}

我知道这行得通:

Class C {

    A obj;
    method{
        obj = new B();
        ((B)obj).methodNotInClassA();
    }

}

但是有更简单更好的东西存在吗?

【问题讨论】:

  • 不,你必须每次都投射。
  • 但是如果我有很多方法需要调用怎么办。我可以创建扩展 A 类的 D 类,然后 B 类实现 D。并使用 D 类声明对象吗?
  • obj 声明为B 类更容易。所以:B obj = new B();

标签: java extends superclass


【解决方案1】:

遗憾的是,您必须每次都进行强制转换,或者您必须创建一个实际类型为B 的变量。您可以检查A 类型的变量是否为B 类型,然后创建一个类似这样的临时变量:

if(obj instanceof B) {
    B tmp = (B) obj;

    // Code using tmp instead of obj
}

但这只是你会得到的最漂亮的。

【讨论】:

    猜你喜欢
    • 2012-12-30
    • 2011-03-28
    • 2021-11-10
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多