1 给定如下JAVA代码,下列()方法可以加入到Sample类中,并且能够编译正确(选两项)
  public class Sample{
     public int getSomething(int d){
         return d;
     }
  }
A private int getSomething(int i,String s){}
B public void getSomething(int i){}
C private int getSomething(byte b){return b;}
D public double getSomething(){return 2;}2 指出下列代码中的错误,并说明原因
  public class Sample{
     public void amethod(int i,String s){}
     public void amethod(String s,int i){}
     public int amethod(String s1,String s2){}
     private void amethod(int i,String mystring){}
     public void Amethod(int i,String s){}
     private void amethod(int i);
  }
请指教!

解决方案 »

  1.   

    1. CD
    A 没有return语句
    B 返回类型不属于method的signature,不能实现重载考察点,1#大企鹅已经说了
      

  2.   

    除了重载,就是考你最基本的点了,比如你的方法返回类型是int,那么你方法体里至少要有int型的变量return出来
      

  3.   

    第1道题,考你怎么正确的重载,答案是CD
    重载就是方法名相同,方法参数列表不同列表,
    A选项没有return语句,错误;
    B选项中和类原有方法同名同参数,不同返回类型,但是不同返回类型不能作为识别方法的条件
    程序调用时,会发生不知道调用哪个方法的情况。
    C和D,都有和A不同的参数列表,所以正确第2道题,也是考重载的,如下两个方法错误
    public int amethod(String s1,String s2){} 
    private void amethod(int i,String mystring){} 
    第一个没有写return语句
    第二个的方法参数列表和 public void amethod(int i,String s){} 的相同,所以错。重载就是指,同方法名,不同参数列表,注意,不同参数列表指参数类型不同,参数顺序不同,而不是参数名不同。
      

  4.   

    对了 private void amethod(int i); 还没有方法体,也是错的。
      

  5.   

    3楼错了吧,应该是BD
    方法的重载和覆盖跟返回类型没有关系,只跟方法名跟参数类型参数。
    但是C的话,开头是private,按照覆盖原理,子类的访问修饰符必须大于父类修饰符,所以这里会出现编译错误。
    这两个题目只是纯粹考语法而已,中国企业爱出这种题目。