当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

<b>Java的Overriding与Overloading</b>[Java编程]

赞助商链接



  本文“<b>Java的Overriding与Overloading</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1.Overriding

Overriding翻译过来是“重写/覆盖”. 它是覆盖了一个办法并且对其重写,以求到达差别的作用.对我们来说最熟习的覆盖就是对接口办法的实现,在接口中普通只是对办法举行了声明,而我们在实现时,就需求实现接口声明的全部办法.除了这个典型的用法以外,我们在担当中也大概会在子类覆盖父类中的办法.

重写的主要特点是:

1)办法名必须与被重写办法一致.

2)办法参数列表必须与被重写办法一致.

3)返回范例必须与被重写办法一致.

4)重写的办法不能降低原办法的"可见度".

比方:被重写办法为protected void do(int i,double d),则重写办法可认为protected void do(int i,double d),大概public void do(int i,double d),但是不可以是private void do(int i,double d).

5)不能抛出新的非常大概"更宽的"非常.

比方:被重写办法为public void do(int i,double d) throws IOException,则重写办法可认为public void do(int i,double d) throws IOException ,大概public void do(int i,double d) throwsddeeException(IOException的子类),但是不可以是public void do(int i,double d) throwsException,因为Exception是IOException的父类,比IOException"更宽".

6)被覆盖的办法不能为private,不然在其子类中只是新定义了一个办法,并没有对其举行覆盖.

2.Overloading

Overloading,翻译成“重载”. 它是指我们可以定义一些名称相同的办法,通过定义差别的输入参数来辨别这些办法,然后再调用时,VM就会按照差别的参数款式,来挑选符合的办法履行.

其特点是:

1)各重载的办法名一致.

2)各重载办法的参数列表不一样(包含参数范例,参数个数,参数次序3项中的一项或多项).

3)返回范例肆意.(不能通过办法的返回值来辨别重载办法.)

4)拜候掌握符肆意.(不能通过办法的拜候权限来辨别重载办法.)

5)可以肆意抛出自身的非常,而不管被重载办法.(不能通过抛出的非常来辨别重载办法.)

Overloading是指“Two or more methods can have the same name if they have different numbers or types of parameters and thus different signatures. ”明显,对重载的唯一要求就是参数列表必须改变,不然就不是重载了.

3.范例转换中的重载

在一些情形下,Java 的自动范例转换也实用于重载办法的自变量.比方,看下面的程序:

// Automatic type conversions apply to overloading.
class OverloadDemo {
  void test() {
    System.out.println("No parameters");
  }

  // Overload test for two integer parameters.
  void test(int a, int b) {
    System.out.println("a and b: " + a + " " + b);
  }

  // overload test for a double parameter
  void test(double a) {
    System.out.println("Inside test(double) a: " + a);
  }
}

class Overload {
  public static void main(String args[]) {
    OverloadDemo ob = new OverloadDemo();
    int i = 88;
    ob.test();
    ob.test(10, 20);
    ob.test(i); // this will invoke test(double)
    ob.test(123.2); // this will invoke test(double)
  }
}

该程序产生以下输出:

No parameters

a and b: 10 20Inside test(double) a: 88Inside test(double) a: 123.2

在本例中,OverloadDemo 的这个版本没有定义test(int) .因此当在Overload 内带整数参数调用test()时,找不到和它匹配的办法.但是,Java 可以自动地将整数转换为double 型,这种转换便可以办理这个问题.因此,在test(int) 找不到今后,Java 将i扩大到double 型,然后调用test(double) .当然,假如定义了test(int) ,当然先调用test(int) 而不会调用test(double) .只有在找不到切确匹配时,Java 的自动转换才会起作用,并且老是找到参数范例最"匹配"的办法,即它的形参比实参“大”且是最“接近”的.

本文出自 “子 孑” 博客,请务必保存此出处http://zhangjunhd.blog.51cto.com/113473/20373


  以上是“<b>Java的Overriding与Overloading</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .