A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张海洋 中级黑马   /  2013-3-21 22:02  /  1348 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-22 12:45

评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

3 个回复

倒序浏览
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);
        }
}

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
黄玉昆 + 1
吴家吉 + 2

查看全部评分

回复 使用道具 举报
重载(Overload):函数名相同,但是参数列表不同 如:参数个数、参数类型、参数的顺序。重载与函数的返回值无关。
重写(Override):函数的声明必须要完全一样 包括:函数名、函数参数列表、函数的返回值类型。而且函数的权限要大于或等于被重写的函数的权限。如果被重写的函数的权限为private 则不能重写。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
1、类中可以创建多个方法,它们具有相同的名字,参数个数和类型不一样。它们就构成了“重载”。返回值类型可以一样,也可以不一样,但是不能把返回值类型作为判断是否重载的依据。

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马