2016-08-17 74 views
-3

我有一些使用方法从外部库(mvn)。所以我不能理解它。当我尝试覆盖该方法即时获得:从外部或私人类的Overrite方法

void是不公开*类;不能从扩展抽象类或类私有方法以外 包 不必须访问该外部库

在如何重写从外部类(库)方法的问题访问错误。

logout = new Class(arg1, arg2) { 
      @Override 
      public boolean ovMethod(){ 
       someMethod(true); 
} 

方法ovMethod()的(外部类,由行家下载)类:

Class extends AbstractClass { 

    public abstract class AbstractClass { 
     void someMethod(boolean arg) { 
     } 
    } 
} 
+1

一般情况下,你不覆盖它,这是封装的整个点。你可以尝试使用像反射这样的东西,但这可能超出了你的实际问题的范围。 –

+1

我希望你不要真的拥有一个名为'Class'的类,因为已经有了'java.lang.Class'。更现实的例子会很有用。目前尚不清楚你在说什么私人方法,因为你没有显示任何内容......如果你提供[mcve],这真的会有所帮助。不过,我怀疑Maven是否完全相关。 –

回答

0

一般来说,你应该覆盖并不意味着要重写的方法。但是,作为最后的手段,如果该方法是包私有(又名默认可见性),你可以在同一个包创建自己的类,因此有权覆盖的方法:

package same.package_as.superclass; 

public class MyClass extends Class { 
    @Override 
    void someMethod(boolean arg) { 
     // custom implementation 
    } 
}