内容纲要
227讲方法重载(OverLoad)、可变参数、作用域
public class Test01{
public static void main(String[] args){
calculate(2,6);
System.out.println(calculate(2,6));
System.out.println(calculate(2,60.0));
calculate(2.0,1.0);
}
public static int calculate(int n1, int n2){
int sum = n1 + n2;
return sum;
}
public static double calculate(double n1,int n2){
double sum = n1 + n2;
return sum;
}
public static double calculate(double n1,double n2){
double sum = n1 + n2;
return sum;
}
public static double calculate(int n1,double n2){
double sum = n1 + n2;
return sum;
}
}
上面这个例子没有构成方法重载,会报错,这个是方法的重复定义。
- 练习题
public class OverLoadExercise{
public static void main(String[] args){
Exercise e = new Exercise();
System.out.println(e.m(5));//25
System.out.println(e.m(2,10));//20
System.out.println(e.m("HandSome"));//HandSome
}
}
class Exercise{
public int m(int i){
int res = i*i;
return res;
}
public int m(int i,int j){
int res = i*j;
return res;
}
public String m(String s){
return s;
}
}
public class Test01{
public static void main(String[] args){
Exercise exercise = new Exercise();
System.out.println(exercise.max(1,5));
System.out.println(exercise.max(1.0,3.0));
System.out.println(exercise.max(6.0,9.0,8.8));
}
}
class Exercise{
public int max(int i,int j){
return i > j?i:j;
}
public double max(double i,double j){
return i > j?i:j;
}
public double max(double i,double j,double m){
double max1;
max1 = j > i ? j : i;
return max1 > m ? max1 : m;
}
}
可变参数
-
可变参数可以当作数组使用。可以通过遍历求和。!!!!
对了可变参数不能是多个数组!!!!
注意可变参数可以和普通类型的形参放一起,但是可变参数一定要放最后!
- 练习
public class Test01{
public static void main(String[] args){
HspMethod student = new HspMethod();
System.out.println(student.showScore("李二",80,40));
System.out.println(student.showScore("张三",10,30,60));
System.out.println(student.showScore("王五",1,2,3,4,5));
}
}
class HspMethod{
public String showScore(String name, double... score){
double totalScore = 0;
for(int i = 0;i < score.length;i++){
totalScore += score[i];
}
String str = name + totalScore;
return str;
}
}
作用域
- 除了属性之外的其它变量时局部变量
1.属性和局部变量可以重名,访问时遵循就近原则。
2.同一个作用域中不能重名。
3.属性生命周期较长,伴随着对象的创建而创建,伴随着对象的销毁而销毁。局部变量,声明周期较短,伴随着它的代码块执行而创建,伴随着代码块的结束而销毁。即在一次方法调用过程中。