黑马程序员技术交流社区

标题: 重写与重载 详细 [打印本页]

作者: 张海洋    时间: 2013-3-21 22:02
标题: 重写与重载 详细

重载(Overload)和重写(Override)的区别:

作者: 我自信我很牛    时间: 2013-3-21 22:16
JAVA中的覆盖override:
覆盖只会在类继承的时候才会出现,覆盖要求两个函数的名字和参数列表都完全一样。

覆盖override的注意事项:
1. 对于父类中的静态函数不可以覆盖。
2. 重写的方法不能降低父类方法的"可见度"。
3. 不能抛出新的异常或者父异常。

如下例:

class A{
   static void m1(){System.out.println("父类A的方法m1");}
   void m2(){}
//   int m2(){}//错误,不能重载m2,参数列表一样
   public void m3(int a){}
}
class B extends A{
//   void m1(){}//不能重写A的m1为非静态方法
   static void m1(){System.out.println("重写(Override)父类A的方法m1");}//重写静态方法
//   private void m3(int a){}//重写错误,不能重写A的m3,因为降低了m3的可见性

   void m2(){}//正确,重写父类A的m2,参数列表和返回值都一样
   public void m3(){}//正确,重载父类A的m3,参数列表不同
  
   void m4(){}
   void m4(int a){}//正确,重载B的m4
   void m5(double b){
        System.out.println("Double Method "+b);
        }
}
作者: 花伟昌    时间: 2013-3-21 22:30
重载(Overload):函数名相同,但是参数列表不同 如:参数个数、参数类型、参数的顺序。重载与函数的返回值无关。
重写(Override):函数的声明必须要完全一样 包括:函数名、函数参数列表、函数的返回值类型。而且函数的权限要大于或等于被重写的函数的权限。如果被重写的函数的权限为private 则不能重写。
作者: 施家雄    时间: 2013-3-21 22:31
1、类中可以创建多个方法,它们具有相同的名字,参数个数和类型不一样。它们就构成了“重载”。返回值类型可以一样,也可以不一样,但是不能把返回值类型作为判断是否重载的依据。

2、重写是父类和子类的多态性,在子类中定义的方法名称、参数、返回类型与父类中的相同的话,在子类中定义了新的功能,这样就实现了“重写”。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2