重载

  在一个类中,我们可以定义一系列方法,这些方法的方法名称相同,参数列表不同,这种语法称之为方法的【重载】。例如我们可以为Student类定义两个study方法;

  Class Student {

    public ststic void study(){

      System.out.println("study()");

    }

    public static void study(int n){

      System.out.println("study(int)");

    }

  }

 

  上面这段代码中,在Student类中定义了两个study方法,一个没有参数,另一个带一个字符串参数。在程序运行期间,根据不同的参数,会调用不同的方法。例如:

  public class TestStudent{

    public static void main(String[] args){

      Student stu = new Student();

      stu.study(); // 调用无参的study方法,打印study()

      stu.study(10);// 调用有参数的study方法,打印study(int)

    }

  }

 

【需要注意的是,当程序被编译时,如果出现方法的重载,Java编译器会根据不同的实参类型,来匹配一个合适的方法调用】

因此,方法的重载又被称为“编译时多态”。

【请记住,这里格外强调“编译时”的概念,因为,哪一个重载的方法会被调用,这个问题在程序的编译时就已经决定了】

 

  我们强调了,方法的重载的关键在于“方法名相同,参数表不同”。那究竟什么样式儿的参数表算是“不同”呢?以下几种情况都可以认为是参数表不同:

  1>参数个数不同,例如:void study()和void study(int a)

  2>参数类型不同,例如:void study(int a)和void study(double d)

  3>参数类型的顺序不同,例如:void study(int a, double d)和void study(double d, int a)

【特别提示:如果两个方法仅仅是形参的名称不同,这不算重载!】即,下面两个方法不能算构成重载:

  void study(int a)和void study(int b)

  此外,方法的重载对方法声明的其他部分没有要求。也就是说,对返回值类型,修饰符,抛出的异常这三个部分,方法重载并不要求它们相同或是不相同。

 

  为什么要设计重载的语法呢?如果一个类中有多个方法,为什么不让这些方法以方法名作为区分呢?

  举例而言,“System.out”是一个对象,在这个对象中,有多个重载的println方法。例如,我们之前写过这样的代码:

  int i = 10;

  System.out.println(i);

  System.out.println("Hello World");

  System.out.println();

  在上面的代码中,我们调用了三次println方法。【注意:这三次调用println方法的时候,都分别传入了不同的参数;第一次参数为Int类型,第二次参数为字符串类型,第三次参数为空】

  现在我们知道,实际上我们调用了三个不同的println方法【重载】。这三个方法都是“System.out”的对象的方法。在这个对象中还有多个重载的println方法。

  这样对于程序员来说,要打印某一个东西,不管是什么类型的参数都可以交给System.out,println方法打印,而不用考虑具体的参数类型。这就像是套用数学公式,只要把数据带入就可以了。程序员只需要记住“System.out.println”能够打印数据就可以。程序员不用担心这里面究竟定义了几个println方法,又该调用哪一个方法。

转载于:https://www.cnblogs.com/LearnSB/p/11431041.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值