方法重载与变量的作用域

127 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

方法重载

java里面允许使用同一个名字去定义多个方法,只要方法的参数列表不同,即参数的数量、类型不完全相同。然后在方法调用的时候,编译器会根据参数列表去选择相应的方法执行。

细节注意:

  1. 方法名必须相同;
  2. 参数列表不完全相同(形参的类型、个数或者顺序至少有一者不一样,不包括参数名)
  3. 返回值在方法调用时,不参与调用的,故返回类型是不要求的,换言之,方法的返回值类型是无法区分重载方法的。

代码演示:

image.png

可变参数:

java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法,这个就是通过可变参数实现。

基本语法:

[访问修饰符] 返回类型 方法名(数据类型...形参名)
{
    方法体;
}

代码演示:

image.png

细节注意:

  • 可变参数里的实参个数为0或者多个;
  • 可变参数可以为数组;
  • 可变参数可以和普通类型的参数一起存放在形参列表里,但是可变参数一定要在普通类型之后
  • 一个形参列表里只能有一个可变参数。

作用域:

  1. 局部变量一般指在成员方法中定义的变量(除属性外的其他变量),其作用域就在当前方法体的那一对花括号里(定义它的代码块里);
  2. 全局变量,也就是属性,其作用域一般为整个类。

细节注意:

  • 全局变量可以不赋值,因为其都有分别对应的默认值,故其可以直接使用,但局部变量必须先给它赋予一个初值,才能直接使用;
  • 属性和局部变量是可以重名的,毕竟它们的作用域是不同的,需掌握的是在访问的是遵循就近原则(可以理解为一个代码块里同名的局部变量优先使用);
  • 属性的生命周期较长,它是和对象共存共灭的,但是局部变量适合代码块共存共灭的,代码块执行完,就将其作战的空间释放了,这就导致我们可以在不同的代码块里设置相同的局部变量名了;
  • 全局变量可以加修饰符,但是局部变量不可以加修饰符。