一、方法的定义和调用
- 在进行方法的重载介绍之前,我们先复习一下之前所讲的方法的定义和调用
1.1方法的定义
- 方法的位置
- 方法定义的格式:
[访问修饰符] 方法的返回值类型 方法名(形参列表) {
方法体
return 与返回值类型相同的值或参数;// 返回值类型不为void才有return
}
- 访问修饰符:可以省略,也可以是public、private、protected、static、final、abstract其中一个,需要注意public、private、protected只能出现一个
- 方法的返回值类型:可以是数据类型,也可以是void,如果使用的是void,那么就没有return,如果一开始使用的不是void,就需要在return后面加上与返回值类型相同的变量或者参数(如果形参类型与返回值相同,后续又需要拿到这个实参,可以 return 形参)
- 方法名:一般首字母小写,也适用于驼峰命名规则,一般动词在前,名词在后,不宜过长
- 形参列表:定义方法可以接受的参数,由0-N[数据类型 参数名] 中间由[ , ]连接而成,一旦指定了形参,那么在调用该方法时就必须传入实参
- 方法的分类:
根据是否带有返回值,是否带有参数,方法可分为以下四类
- 无参数无返回值
- 在本类中引用: 方法名();
- 在其他类中引用:对象.方法名
- 无参数有返回值
- 在本类中引用: 变量 = 方法名(); //有返回值,需要定义一个与返回值类型相同的变量来接收返回值
- 在其他类中引用:变量 = 对象.方法名(); //有返回值,需要定义一个与返回值类型相同的变量来接收返回值
- 或者直接
System.out.println(对象.方法名());
- 有参数无返回值
- 在本类中引用:方法名(实参列表); //有参数,故引用时需要在括号内传入实参
- 在其他类中引用:对象.方法名(实参列表);//有参数,故引用时需要在括号中传入实参
- 有参数有返回值
- 在本类中引用:变量 = 方法名(实参列表);
- 在其他类中引用:变量 = 对象.方法名(实参列表);
- 或者直接:
System.out.println(对象.方法名(实参列表));- 因为有返回值,所以需要定义一个与返回值类型相同的变量来接收返回值
- 因为有参数,所以括号中要传入相应的实参
注意点:
第二个无参有返:
- return 后面可以填跟返回值类型相同的变量即可 即return 返回值的变量
public String run(){
System.out.println("这是无参数有返回值的情况,return后面的类型要与返回值类型相同");
return "foot";
}
第四个有参有返
- return后面填跟返回值类型相同的变量或者参数,如果后续需要取到这个参数,那么就在return后面填入这个形参,例如形参为 (String food),那么就"return food.",后续在调用这个方法的时候进行实参赋值,再用变量来接收,就可以取到这个值了,
在Dog类中:这里括号中的food参数和方法的返回值类型相同都是String,
public String eat(String food){
System.out.println("这是有参数有返回值的情况。return后面的类型要与返回值类型一致");
//这里的return传入括号中的参数名
return food;
}
在测试类中:通过对象.方法名(实参列表);进行方法调用,再用与返回值相同类型的a接收执行方法后所产生的返回值,打印输出,观察控制台是否拿到
//调用有参有返的方法,有返回值,需要变量接收,也需要在括号内传入实参
String a = dog.eat("rich");
//输出“吃的是rich”
System.out.println("吃的是"+a);
二、方法的重载
重载:指在一个类中有多个方法,方法名相同,但方法的参数不同(参数的个数或者种类不同)
注意点:
- 方法名相同
- 方法参数类型,参数个数不一样
- 方法的返回类型可以不相同
- 方法的修饰符可以不相同
- main方法也可以被重载
public class Test {
public int plusMethod(int x,int y){
return x +y;
}
public double plusMethod(double x,double y){
return x + y;
}
public static void main(String[] args) {
Test test = new Test();
//有返回值,定义一个与返回值类型相同的变量接收返回值,
//调用方法时传入实参
int num = test.plusMethod(1,2);
System.out.println("num=" + num);
//有返回值,定义一个与返回值类型相同的变量接收返回值
//调用时传入实参
double num1 = test.plusMethod(11.0,12.2);
System.out.println("num1="+num1);
}
}
以上的例子的两个“ plusMethod()”方法,都在同一个类中,都有相同的方法名,但是由于方法的参数l类型不同,一个是int,一个是double,所以发生了方法的重载。