黑马程序员技术交流社区

标题: Java中的重载(overload) [打印本页]

作者: Enhon1992    时间: 2015-6-4 09:51
标题: Java中的重载(overload)
重载的概念:
在同一个类中允许存在一个以上的同名函数,只要这些函数的参数类型或者参数的个数还有或者是参数的顺序不同,这些函数就可以构成重载;

简单来说就是参数列表不同就可以构成重载 比如:下面两个函数就可以构成重载
  1. public void test(int b,String s )
  2.     {
  3.         
  4.     }

  5.     public void test(String s,int b)
  6.     {
  7.         
  8.     }
复制代码


重载需要注意的地方:
1 ,与函数的返回值无关
比如:下面两个函数就不构成重载 因为参数列表一样
  1.         public void test(int b,String s )
  2.     {
  3.         
  4.     }

  5.     public int test(int b,String s)
  6.     {
  7.         return 0;
  8.     }
  9. }
复制代码


2.与函数是否是静态无关
比如:下面两个函数也不构成重载 因为参数列表一样
  1.         public void test(int b,String s )
  2.     {
  3.         
  4.     }
  5.         public static void test(int b,String s)
  6.         {
  7.                
  8.         }
复制代码


3,与函数是否声明了 Checked Exception  无关
比如:下面两个函数同样不构成重载 因为参数列表一样
  1.         public void test(int b,String s )throws IOException
  2.     {
  3.         
  4.     }

  5.         public void test(int b,String s )
  6.         {
  7.                
  8.         }
复制代码


重载的应用场景:
比如:现在我们的需求是定义 实现加法运算的函数,由于进行加法的运算的两个数的数据的数据类型不确定 我们就可以通过重载来定义多个函数名相同的函数 每个函数对不同的数据类型进行加法运算
作者: jife94    时间: 2015-6-4 10:05
再整理个构造器重载呗
作者: 夏尔    时间: 2015-6-4 10:17
挺详细的
作者: Enhon1992    时间: 2015-6-4 12:56
jife94 发表于 2015-6-4 10:05
再整理个构造器重载呗

好的!!!!
作者: rexih    时间: 2015-6-4 13:12
JVM会对每一个类建立一个方法表,里面记录了方法的签名(方法名+参数类型),在调用方法时,首先看是静态加载还是动态加载,静态加载指的是用private(私有函数子类不可见),static(静态没有隐式参数this),final修饰的方法,这些方法唯一,可以直接确定。动态加载则是其他。静态加载直接查看方法表寻找签名相符的方法,动态加载列举出对象所有超类的public方法和本类方法的签名,寻找相符的方法。如果有多个方法相符或者没有方法相符则异常,有唯一的方法则调用





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