通常,方法的默认访问级别是包本地.但在我看来,对于公共抽象类来说它是不同的.在这些类中,默认值似乎是公开的.它是否正确?
这是我的代码中的一个错误.可以使用公共方法隐藏包本地方法,这让我感到困惑.这让我觉得公共摘要可能类似于公共方法的接口.看例子:
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.
| 归档时间: |
|
| 查看次数: |
10148 次 |
| 最近记录: |