当前位置: 技术问答>java相关
有一个SCJP模拟题不懂,请各位大大指教
来源: 互联网 发布时间:2015-03-15
本文导语: 原题是这样的: Which one of the following statements is true? A. An abstract class may not have any final methods. B. A final class may not have any abstract methods. Answer:B. 解释说A也对,但是为什么?下面是解释。 Any class with a...
原题是这样的:
Which one of the following statements is true?
A. An abstract class may not have any final methods.
B. A final class may not have any abstract methods.
Answer:B. 解释说A也对,但是为什么?下面是解释。
Any class with abstract methods must itself be abstract,and a class may not be both abstract and final.Statement A says that an abstract class may not have final methods,but there is nothing wrong with this.The abstract class will eventually be subclassed,and the subclass must avoid overriding the parent's final methods.Any other methods can be freely overridden.
到底为什么是B对呀?我实在是不懂,还望大大们指教。
Which one of the following statements is true?
A. An abstract class may not have any final methods.
B. A final class may not have any abstract methods.
Answer:B. 解释说A也对,但是为什么?下面是解释。
Any class with abstract methods must itself be abstract,and a class may not be both abstract and final.Statement A says that an abstract class may not have final methods,but there is nothing wrong with this.The abstract class will eventually be subclassed,and the subclass must avoid overriding the parent's final methods.Any other methods can be freely overridden.
到底为什么是B对呀?我实在是不懂,还望大大们指教。
|
我的理解是:答案A的描述虽然没错,但这种提法没有意义。解释里说子类是不能覆盖父类中的不可被继承的方法,如果父类是虚类,其定义的方法一定没有方法体,若虚类中定义的方法不可被继承,而子类又不能通过覆盖来实现该方法,那么虚类中的这个方法是没有意义的,所以实际中不可能在虚类中定义不可继承的方法,因此对出题者来说专门用A中的描述来说明问题没有实际意义,对他来说“An abstract class may not have any final methods”是很自然的事,不必用语言描述。
不知道老兄同意否?
不知道老兄同意否?
|
原来这里还有更高分儿。
确实是 b 对;a 错。
解释也是这个意思。
您再仔细看看。
确实是 b 对;a 错。
解释也是这个意思。
您再仔细看看。
|
b对;a错。
final methods虽说不能被继承,但它放在abstract class里面不会出错;反之,b不行
解释也是这个意思
final methods虽说不能被继承,但它放在abstract class里面不会出错;反之,b不行
解释也是这个意思
|
may not have
到底是
不可以有
还是
可以没有
从英语的角度说好像是 可以没有,
但是这里显然是 不可以有。
answer is b
absolutely.
因为抽象类中有不能重载的方法是完全可能的。
而final类中如果有抽象方法,那么它毫无意义。因为既不能
实例化,也不能被继承。实际上编译都通不过。
到底是
不可以有
还是
可以没有
从英语的角度说好像是 可以没有,
但是这里显然是 不可以有。
answer is b
absolutely.
因为抽象类中有不能重载的方法是完全可能的。
而final类中如果有抽象方法,那么它毫无意义。因为既不能
实例化,也不能被继承。实际上编译都通不过。
|
题目中may not的意思是can not-不可以,所以答案选b
a:抽象类中不可以含有final方法(错)
b:final类中不可以含有abstract方法(对)
抽象类中可以含有final方法,这个抽象类的子类不override这个final方法就是了,所以a错;
含有抽象方法的类一定是抽象类,它一定要被子类继承以override自身的抽象方法,而final类是不能被继承的,即final和abstract不能共同作为类的修饰符。所以b对。
a:抽象类中不可以含有final方法(错)
b:final类中不可以含有abstract方法(对)
抽象类中可以含有final方法,这个抽象类的子类不override这个final方法就是了,所以a错;
含有抽象方法的类一定是抽象类,它一定要被子类继承以override自身的抽象方法,而final类是不能被继承的,即final和abstract不能共同作为类的修饰符。所以b对。