public class Parent {
     int change() {…}
   }
   class Child extends Parent {
   
   }
下面那个方法可以被加入到Child类中?
a) public int change(){}
b) abstract int chage(){}
c) private int chage(){}
d) public void change(){}
答案是A 为社么???

解决方案 »

  1.   

    我能 排除 d 和 bd  它返回的类型和 超类的不一样
       覆盖 要求 子类方法的方法名、参数、返回类型都一致
    b  它是个抽象的方法  抽象的方法是不能被继承的,而且 不能有具体的方法实现至于 c 能不能私有  我还不能肯定
      

  2.   

    楼主对JAVA中方法的重写没有理解好,在JAVA中方法的重写要注意以下内容
    (1)在子类中对父类方法的重写不能使用比父类方法更严格的访问权限
         在上题中由于父类中方法是缺省的,子类要想重写它只能使用缺省的修饰符或public的, 所以答案C不下确
    (2)如果重写父类的方法返回值必须相同,所以D不对,D也不可能是方法的重载,因为子类和父类的参数都没有,方法的重载要求参数必须不同
    (3)由于Child不是抽象类,所以它中不能有抽象方法,所以B不对
      

  3.   

    b不对是因为抽象方法不能有主体
    c不对是因为在Child中覆写change()方法时权限级别不能低于父类中的级别
    d不对是返回类型与父类中的不一致
    你用最原始的JDK一运行这个程序啥都知道了