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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 温立华 中级黑马   /  2013-3-18 21:55  /  1631 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 温立华 于 2013-3-19 10:16 编辑

、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 刘海浩 于 2013-3-18 22:02 编辑

override(重写)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
   overload(重载)
1、参数类型、个数、顺序至少有一个不相同。  
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。


Overloaded的方法是可以改变返回值的类型。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 恭喜25分~

查看全部评分

回复 使用道具 举报
java中的继承,方法覆盖(重写)override与方法的重载overload的区别

方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。   
重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) 。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载。

1. Override 特点   
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;   
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;   
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4、方法被定义为final不能被重写。  
5、对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重写覆盖,如果定义的话,也只是定义了一个新方法,而不会达到重写覆盖的效果。(通常存在于父类和子类之间。)

2.Overload 特点   
1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));   
2、不能通过访问权限、返回类型、抛出的异常进行重载;   
3、方法的异常类型和数目不会对重载造成影响;   
4、重载事件通常发生在同一个类中,不同方法之间的现象。
5、存在于同一类中,但是只有虚方法和抽象方法才能被覆写。

其具体实现机制:

overload是重载,重载是一种参数多态机制,即代码通过参数的类型或个数不同而实现的多态机制。 是一种静态的绑定机制(在编译时已经知道具体执行的是哪个代码段)。   
   
override是覆盖。覆盖是一种动态绑定的多态机制。即在父类和子类中同名元素(如成员函数)有不同 的实现代码。执行的是哪个代码是根据运行时实际情况而定的。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
Overload:在同一类中,方法名相同,参数列表不同
Override:在不同的类中(存在着继承或者实现关系),方法声明相同(方法名和参数列表)
Overload可以改变返回值类型,因为他和返回值无关。
回复 使用道具 举报
重载:只看同名函数的参数列表。
重写:子父类方法要一模一样。
Overloaded可以改变因为与返回值无关
  1. void show(int a,char b,double c){}
  2. int show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
复制代码
回复 使用道具 举报
(1)Overload是重载,是有相同的方法名,但参数类型或个数彼此不同Override是重写,是在子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的改方法。
(2.)可以
public class Test
          {
public static void main(String [] args){
Father f = new Father();  
       String s = f.Test(1,2);            
             int i = f.Test(1);               
                System.out.println(i);               
                      System.out.println(s);
                                     }
          }
class Father{
  public int Test(int i){
          i = i;  return i;
                         }
       public String Test(int i ,int j){
         String s ="通过不同的方法可以返回不同类型的参数";      
              return s ;  
      }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马