在Java继承中,表达式"可以覆盖抽象方法"与表达式交替使用"实现抽象方法"?
我在书中找到了以下问题" OCA Java SE 8 Programmer I Study Guide"在第5章,第296页,问题#15:
问:对于具体的子类,以下哪一项是正确的? (选择所有适用的选项)
我的回答是B& E.但是这本书说,正确的答案只是B. 我的问题具体是关于选项E.书中说,选项E是不正确的,因为抽象方法必须被具体的子类覆盖。我最初的想法是抽象方法必须在被子类覆盖之前实现。为什么选项不正确?
答案 0 :(得分:1)
抽象方法是一种声明,但不包含任何实现的方法。
final
声明的方法。答案 1 :(得分:1)
让我一次解释一个问题。
:一种。具体的子类可以声明为抽象。
答案:不正确。
根据定义,具体类是can be instantiated
和此类can also extends
基本抽象类的类。
<强> B中。具体的子类必须实现所有继承的抽象方法。
答案:正确
如果方法在基类中标记为abstracts
,则子类扩展基类应确保实现所有抽象方法。 You will otherwise get a compile time error
。
<强>℃。具体的子类必须实现继承接口中定义的所有方法。
答案:不正确
仅当具体子类具有directly implemented the interface by this class itself
时才会出现这种情况。
但是在这种情况下,基类可能已经实现了一个继承的接口.Hence,它的不是必需的用于具体的子类来实现基类中的所有方法,因为继承自界面。
<强> d。具体的子类不能标记为final。
答案:不正确
如果子类被标记为final,则此类不能再被任何其他可用子类扩展。使用final
关键字标记类特别用于实现Immutability。
使用Immutable类,我们可以调用访问器方法(例如getter方法),复制对象或传递对象 - 但是没有方法可以允许修改对象的状态。示例:字符串,包装类,如Float,Integer.etc。
<强>电子。抽象方法不能被具体的子类覆盖。
答案:不正确
根据定义,抽象方法是仅被声明但不包含主体或实现的方法。由于我们无法实例化抽象类,因此最多为子类提供这些定义的抽象方法的实现。{{1 }}