1、重载与重写的定义是什么,二者有何区别?
2、编译器通过方法的哪些部分来辨认方法是否为同一方法?
3、由哪个关键字修饰的类不能被继承,String类能被继承么?
4、下面哪些定义会发生编译错误,为什么?     abstract final String getName(){.....}    abstract static int getAge(){.....}   abstract final class Hello{......}      class Hello{abstract void print();}   abstract Hello{abstract final void print();}   abstract Hello{abstract static void print();}
5、抽象类中必须要存在抽象方法么,抽象类可以被实例化么?
6、一个类继承抽象类之后可不可以不实现它的抽象方法?

解决方案 »

  1.   

    1 overload 和 override的区别: override 的方法签名必须一样,出现在有继承关系的类中,
    overload的方法签名完全不同,不能参数列表相同,返回值不同。
    2 方法签名
    3 final 修饰类 final class, String不能被继承

    5 否,否
    6 不实现也成为一个抽象类
      

  2.   

    1、重载:在同一类中,两个函数的函数名相同,但参数不同 。
       重写:子类继承父类,在子类中,重写把父类中的某个函数进行重新写一遍,变成自雷自己的函数
    2、方法的签名,是辨别的方式,准确的讲,是一个table表,里面包含了方法的注册信息
    3、被final修饰的类不能继承
       String不能被继承
    4、abstract final String getName(){.....}
       abstract final class Hello{......}
       abstract Hello{abstract final void print();} 
       以上3个错误
    5、抽象类中,不一定含有抽象方法
       抽象类,不可以被实现
    6、若不是抽象类,则要实现;否则,可以不实现
    ------------------------
    请楼下同志在回答时,自觉动手,禁止抄袭 。 抄袭者,鄙视你,鄙视 ...
      

  3.   

    1、重载:在同一类中,两个方法的方法名相同、但参数列表不同(参数个数、参数所放顺序、参数类型)
       重写:是子类继承父类后,子类中有一个方法与父类的方法的结构完全一样,那么父类的那个方法就全被覆盖
    2、编译器是通过方法的方法名称、方法的参数列表来判断方法为同一方法(这与重载定义相反)
    3、用final(终态)关键字来定义一个类之后,该类不能被继承、同时,String类不能被继承就是因为其为        
       final型的
    4、abstract final String getName(){.....} abstract 与 final 二选一,不能共存
       abstract final class Hello{......}     abstract 与 final 二选一,不能共存
       class Hello{abstract void print();}    只有抽象类才能拥有抽象方法
       abstract Hello{abstract final void print();}  类中的方法把abstract final去掉
       abstract Hello{abstract static void print();} 把static去掉
    5、抽象类中可以没有抽象方法、抽象类不能被实例化
    6、一个类继承抽象方法后,必须实现抽象类的所有抽象方法