gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:51 25 4
gpt4 key购买 nike

通常方法的默认访问级别是本地包。但是在我看来,公共(public)抽象类是不同的。在这些类中,默认值似乎是公开的。这是正确的吗?

更新

@EJP

这是我代码中的错误。可以用公共(public)方法隐藏包本地方法,这让我很困惑。这让我认为公共(public)抽象可能类似于方法公开的接口(interface)。看例子:

a/A.java:

package a;

public abstract class A
{
String a () { return "a"; }
}

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());
}
}

最佳答案

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

package apackage;

public abstract class AbstractFoo {

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

}

快速实现:

public class Foo extends AbstractFoo {

@Override
void bar() {}
}

现在,在另一个包中:

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

AbstractFoo something=new Foo();
something.bar();//Compiler complains here

编译器提示可见性。因此,方法的默认可见性是包保护,即使该类是public abstract

关于java - Java 公共(public)抽象类中方法的默认访问级别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17232312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com