我的理解是:答案A的描述虽然没错,但这种提法没有意义。解释里说子类是不能覆盖父类中的不可被继承的方法,如果父类是虚类,其定义的方法一定没有方法体,若虚类中定义的方法不可被继承,而子类又不能通过覆盖来实现该方法,那么虚类中的这个方法是没有意义的,所以实际中不可能在虚类中定义不可继承的方法,因此对出题者来说专门用A中的描述来说明问题没有实际意义,对他来说“An abstract class may not have any final methods”是很自然的事,不必用语言描述。不知道老兄同意否?

解决方案 »

  1.   

    b对;a错。final methods虽说不能被继承,但它放在abstract class里面不会出错;反之,b不行解释也是这个意思
      

  2.   

    一个类里面有抽象方法必然是抽象类,必须被继承;
    而如果同时它又声明为final类的话,不能被继承,所以B是正确的!
    A是不对的,抽象类里面可以包含抽象方法,也可以没有,抽象方法
    在抽象类被继承后必须被实现,而其他抽象类里面的方法可以被重写
    也可以不被重写,声明为fianl很正常!
      

  3.   

    If a class contains one or more abstract method,the class must be declared abstract.So,the mean of the answer B is a final class may not be any abstract class!It's true. 
      But an  class contains one or more final methods,the class may not be declared final.只要这个抽象类中的final方法不在它的子类中被Overriding.So,A is wrong! 
      

  4.   

    同意大家的意见,final和abstract好像水和火:)
      

  5.   

    b对;a错。
    因为抽象类中可以含有Final方法,他们并不矛盾。
      

  6.   

    may not have
    到底是
    不可以有
    还是
    可以没有从英语的角度说好像是 可以没有,
    但是这里显然是 不可以有。answer is b 
    absolutely.
    因为抽象类中有不能重载的方法是完全可能的。
    而final类中如果有抽象方法,那么它毫无意义。因为既不能
    实例化,也不能被继承。实际上编译都通不过。
      

  7.   

    题目中may not的意思是can not-不可以,所以答案选b
    a:抽象类中不可以含有final方法(错)
    b:final类中不可以含有abstract方法(对)
    抽象类中可以含有final方法,这个抽象类的子类不override这个final方法就是了,所以a错;
    含有抽象方法的类一定是抽象类,它一定要被子类继承以override自身的抽象方法,而final类是不能被继承的,即final和abstract不能共同作为类的修饰符。所以b对。