我很困惑,因为我在书中发现了两个我认为不正确的概念。请帮助我澄清这两点。
只要一个类有一个或多个抽象方法,这个类就是抽象的,即使它没有被声明为abstract(尽管强烈建议这样做)。这是正确的:
class A
{
public abstract void f() ; // OK
.....
}
然而,A被认为是抽象的,并且表达如新的A(...) 将被拒绝。
抽象方法必须声明为public,这是合乎逻辑的,因为它的目的是在子类中重新定义。
第一点给我一个错误,第二点没有必要。我在正确的道路上吗?
答案 0 :(得分:3)
错误。您无法在非abstract
类中声明abstract
方法。
错误。您也可以使用protected
或包本地abstract
方法。
有关接口的一条特殊规则:接口中的方法始终 public abstract
。在定义接口时指定任何这些修饰符是多余的:
public interface Foo
{
/* public abstract is implied here */ void bar();
}
答案 1 :(得分:3)
这本书完全错了。我建议回收它。
abstract
方法的类必须声明abstract
public
- 除了 private