Which two are valid in a class that extends class A? (Choose two)  A. public int method1(int a, int b) { return 0; }  B. private int method1(int a, int b) { return 0; }  C. private int method1(int a, long b) { return 0; }  D. public short method1(int a, int b) { return 0; }  E. static protected int method1(int a, int b) { return 0; }------------------------------------    1. public class Outer{  2. public void someOuterMethod() {  3. // Line 3  4. }  5. public class Inner{}  6. public static void main( String[]argv ) {  7. Outer o = new Outer();  8. // Line 8  9. }  10. }  Which instantiates an instance of Inner?  A. new Inner(); // At line 3  B. new Inner(); // At line 8  C. new o.Inner(); // At line 8  D. new Outer.Inner(); // At line 8//new Outer().new Inner()
---------------------------------------
这两个题应该怎么解答 ,请给出原因

解决方案 »

  1.   

    应该是:1  A,E 
    2  D
      

  2.   

    1. 只有public 和 pretected 可以被继承
    2。 就这样的  因为内部类就在一个类的内部
      

  3.   

    答案是AE和D   这个看看Core Java或者Java how to Program的相关章节就有解了
      

  4.   

    1.子类不能访问父类的private方法,排除BC
      D中的返回值0是int类型,不是short2.内部类访问外部类需要 new Outer, new Outer访问Inter类只要用.就可以访问
      

  5.   

    第一题:
    private的方法不能被继承,static方法不能被override,所以选A,D
    第二题什么意思?在Outer中实例化new Inner()就可以.如果在其他类中实例化Outer的内部类
    就要new Outer().new Inner()
    不清楚楼上的理由,请解释一下.
      

  6.   


    1. class A {  2. protected int method1(int a, int b) { return 0; }  3. }
    Which two are valid in a class that extends class A? (Choose two)   A. public int method1(int a, int b) { return 0; }   B. private int method1(int a, int b) { return 0; }   C. private int method1(int a, long b) { return 0; }   D. public short method1(int a, int b) { return 0; }   E. static protected int method1(int a, int b) { return 0; } ------------------------------------ 没贴全也可以答,太强了。呵呵我对题目的理解是:哪两个函数在b类中有效,b类继承于a类D. public short method1(int a, int b) { return 0; } ----------------------------------------------------这个无效吗? 多态只检测函数名称,和参数的类型和个数,满足多态的条件呀?他为什么不效?
    1. 只有public 和 pretected 可以被继承 
    2。 就这样的  因为内部类就在一个类的内部-------------------
    第二题明白了
      

  7.   

    第一题没给出类A的代码,没法做。
    第二题A. 选项D后面注释中的写法是对的。
      

  8.   

    我也是初学者,第1道问题里没有说,class A 中有方法 method1 。
    第二道题 我选择 AB , 因为我看到《thinking in java》中的好多代码都是这样写的,没有任何问题。
    关于D我想是错的  new Outer.Inner() 在这里,Outer应该是指一个包。这是我的理解,我得亲自动手试一下。 
      

  9.   


    这个叫方法的重写,D中只有返回类型不同与子类,不符合方法重写的要求。另外我不确定D这么写是否正确,我认为返回值0是int类型,而D中的返回值是short类型,有环境的可以试一下.
      

  10.   

    多态包含重写和重载由于给的答案中参数的个数,类型和顺序都和父类的一模一样,所以不考虑重载问题只可能是重写了
    重写就是完全覆盖父类的方法(从返回类型到名字到参数都一模一样),唯一可以不同的就是,访问修饰符要>=父类那个方法的访问修饰符还有D那个return 0返回的是个int,而返回类型确实short肯定编译通不过撒
      

  11.   

    纠正一下如果是普通的方法
    public short m(int a, int b){return 0;}
    没有问题,甚至可以是byte,char这里出错的原因还是重写的问题,重写的话返回类型必须与要覆盖的方法一样
      

  12.   

    如果给了A中的代码,哪两个有效,那选A,C.B和E的理由上面已说过,D的返回类型跟父类不一样,也不行,而C跟父类没关系当然有效,只有A,C有效
      

  13.   

    第一题的正确答案是ACB. TestA 中的 method1(int,int) 无法覆盖 A 中的 method1(int,int);正在尝试指定更低的访问权限。
    D. TestA 中的 method1(int,int) 无法覆盖 A 中的 method1(int,int);正在尝试使用不兼容的返回类型。
    E. TestA 中的 method1(int,int) 无法覆盖 A 中的 method1(int,int);覆盖的方法为静态。
      

  14.   

    第二题的正确答案是AB. 无法从静态上下文中引用非静态 变量 this
    C. 软件包 o 不存在
    D. 无法从静态上下文中引用非静态 变量 this   D后注释掉的写法是正确的。
      

  15.   

    第一题选a d吧  e是static的 无法被继承和继承谁。编译都该报错。
    第二题选a