我很困惑,因为我在书中发现了两个我认为不正确的概念。请帮我澄清这两点。
一旦一个类具有一个或多个抽象方法,该类就是抽象的,即使它没有声明为抽象(尽管强烈建议这样做)。这是正确的:
class A { public abstract void f() ; // OK ..... }
尽管如此,A 被认为是抽象的并且是一个表达式,例如 new A(...) 将会被拒绝。
抽象方法必须声明为 public,这是合乎逻辑的,因为它的目的是在子类中重新定义。
第一点给了我一个错误,第二点是不必要的。我走在正确的道路上吗?
最佳答案
错了。您不能在非
abstract
类中声明abstract
方法。错了。您也可以拥有
protected
或包本地抽象
方法。
关于接口(interface)有一个特殊规则:接口(interface)中的方法始终公共(public)抽象
。在定义接口(interface)时指定任何这些修饰符都是多余的:
public interface Foo
{
/* public abstract is implied here */ void bar();
}
关于java - 关于抽象类的两个概念让我困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392999/