Java中公共抽象类中方法的默认访问级别是什么?

cev*_*ing 8 java

通常,方法的默认访问级别是包本地.但在我看来,对于公共抽象类来说它是不同的.在这些类中,默认值似乎是公开的.它是否正确?

更新

@EJP

这是我的代码中的一个错误.可以使用公共方法隐藏包本地方法,这让我感到困惑.这让我觉得公共摘要可能类似于公共方法的接口.看例子:

A/A.java:

package a;

public abstract class A
{
    String a () { return "a"; }
}
Run Code Online (Sandbox Code Playgroud)

test_a.java:

class test_a
{
    static class NewA extends a.A
    {
        public String a () { return "new a"; }
    }

    public static void main (String[] args)
    {
        NewA a = new NewA();
        System.out.println(a.a());
    }
}
Run Code Online (Sandbox Code Playgroud)

Arn*_*lle 11

是的,让我们看一个简单的例子:

package apackage;

public abstract class AbstractFoo {

  //A method with default visibility
  abstract void bar();

}
Run Code Online (Sandbox Code Playgroud)

快速实施:

public class Foo extends AbstractFoo {

  @Override
  void bar() {}
}
Run Code Online (Sandbox Code Playgroud)

现在,在另一个包中:

public static void main(String[] args) throws Exception{

  AbstractFoo something=new Foo();
  something.bar();//Compiler complains here
Run Code Online (Sandbox Code Playgroud)

编译器抱怨可见性.因此,方法的默认可见性是包受保护的,即使该类是public abstract.