-1
class base {
    public <type> a;

}

class derived extends base {
     ...
     public void dMethod() {
         a.method();
     }
     ...
}

片段来自我项目中使用的包 AI。 derived应该看到ain base ,所以它可以使用它。

但是当我运行mvn clean install打包我的项目时,它抱怨它在派生类中找不到符号 a(我已经添加了包 A 依赖项)。

它出什么问题了?

编辑:

我在我的项目中使用该代码,如下所示:

class my {
    derived d = new derived();
    d.a.method();
     ...
}

它在eclipse中工作正常,但是当我打包它时,它会抱怨。并且method()确实有public修饰符。

4

2 回答 2

2

公共属性或方法随处可见

由于a是公共的,您可以从派生类(或代码中的任何其他类)访问它。

但是,即使a是公开的,也不会公开其方法。在您的情况下,如果您在调用 时遇到问题a.method(),那是因为method在您的上下文中不可见(它可能是私有的、受保护的或具有包可见性)。

解决方案是检查该方法a.method(),如果可以的话,可以将其更改为公开。或者,该对象a的使用方式可能有所不同。

于 2012-10-17T09:36:00.013 回答
0

method() 应该有一个公共的(或者在这种情况下受保护的也可以)标识符......在“a”上的标识符上拥有公共并不会使它的所有字段和方法都公开。

于 2012-10-17T09:26:46.847 回答