答案同楼上。
其实没什么可解释的,这些都是JAVA的规定。第一题: B、E会导致编译错误,返回类型始终应该位于所有修饰符以后,final和abstract不能组合。C不是final方法,不能避免覆盖。第二题:A、B是静态内部类(也叫嵌套类),静态类不能直接访问非静态成员。D、内部类不能是protected

解决方案 »

  1.   

    which two declaretions prevent the overriding of a method? 
    A. final void methoda(){}     // 正确
    B. void final methoda(){}     // final 要在void前
    C. static void methoda(){}    // 可以 override
    D. static final void methoda(){}   // 正确
    E. final abstract void methoda(){}  // abstract 的方法不可以是final 的所以为AD,  即 final 的方法不可以被覆写
    24.(      )
    You need to insert an inner class declaration at line3. Which two inner class declarations are valid? (Choose Two) 
    1.public class OuterClass{ 
    2.private double d1=1.0; 
    3.//inser code here 

    A. static class InnerOne{ 
        public double methoda(){return d1;}  // static 不能修饰class
    B. static class InnerOne{ 
         static double methoda(){return d1;}  // 同上
    C. private class InnerOne{ 
        public double methoda(){return d1;}  // 正确
    D. protected class InnerOne{ 
         static double methoda(){return d1;}  // inner class 不能有static 的method
    E. public abstract class InnerOne{       
       public abstract double methoda(); //正确所以是 ce
      

  2.   

    楼上的说错了吧!内部类可以是static的,这样的类叫嵌套类(Nested Class)。我上面也说错了一处,更正一下!! -_-!
    D应该错在:非static的内部类里不能有static方法。
      

  3.   

    23。考察对final的理解 ADE 可以考虑入选,首先用final是要锁住这个函数,是derived class无法改变其意义,确保函数在继承过程中保持不便,而且无法被覆写,而无法覆写就意味着与abstract矛盾,所以E被淘汰。 结果为AD24。A与B类似 因为d1不是static,而innerclass是static的,所以A,B被淘汰;
        D 第1,methoda方法是static的,而innerclass不是static的,static方法可以定义在outtclass里面,例如main函数;第2 因为d1不是static,而methoda是static的,所以D被淘汰;
        C,E正确
       
      

  4.   

    TO Dan1980(String someGoodAdvices)  
    第二题:A、B是静态内部类(也叫嵌套类),静态类不能直接访问非静态成员。D、内部类不能是protected
    ----------------------------------内部类可以是protected的,D的错误原因不在protected那里,而在与static
    =======================================================================
    TO milkbottle(奶瓶->好好学习,天天向上) static 不能修饰class,inner class 不能有static 的method
    -----------------------------------
    innerclass当然是static的,而且可以有static的方法
      

  5.   

    修正一下,上面少写了两个字,应该是:innerclass当然“可以”是static的,而且可以有static的方法
      

  6.   

    which two declaretions prevent the overriding of a method? 
    A. final void methoda(){} 
    B. void final methoda(){} 
    C. static void methoda(){} 
    D. static final void methoda(){} 
    E. final abstract void methoda(){} 
    A正确,B不知道,C可以被重构(overriding),D不知道,E错误,抽象类需要别的类来继承,怎么可能加final修饰符。
    我还真没注意过他们的修饰符之间的顺序关系。
    第2题我一直糊涂。
      

  7.   

    topil(认认真真学习,塌塌实实工作):TO Dan1980(String someGoodAdvices)  
    第二题:A、B是静态内部类(也叫嵌套类),静态类不能直接访问非静态成员。D、内部类不能是protected
    ----------------------------------内部类可以是protected的,D的错误原因不在protected那里,而在与static
    -------------------------------------------------------------------------------不好意思, 我说错了, 我已经在后面那个回复里更正过来了.zbo(大门) :void不是修饰符, 是返回类型, 返回类型始终应该在方法名的前面, 修饰符的后面.
      

  8.   

    不仅在类里可以声明类, 在方法里都可以声明类.类中的类叫Inner Class(内部类), 类中的静态类也叫Nested Class(嵌套类), Nested Class可以做为类库的一部分, JDK中的很多核心类都是Nested Class, 查一下javadoc就知道了. 方法中的类叫Local Class(本地类), 本地类通常是匿名形式, 仅当需要多次使用时才采用非匿名形式.楼主可以去看<Think in Java>第8章"Interface & Inner Classes", 里面讲得很清楚了.