1、方法重载
定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可
- “两同一不同”:同一个类、相同方法名;参数不同或者参数类型不同
- 方法是否重载和方法的权限修饰符、返回值类型,形参变量名、方法体都没有关系
public int add(int x, int y){
return x+y;
}
public double add(double x, double y){
return x+y;
}
public int max(int x, int y){
return x>y ? x : y;
}
public double max(double x, double y){
return x>y ? x : y;
}
public double max(double x,double y,double z){
double max1 = x>y? x:y;
return max1>z?max1:z;
}
2、可变个数形参
- 格式:数据类型 …变量名
- 当调用可变个数的形参时,传入的个数可以是0个、1个、多个
- 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
- 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载(不能共存)
- 可变个数形参在方法的形参中,必须声明在末尾,且最多只能声明一个可变形参
public void show(String ...str){
System.out.println(str[1]);
}
public void show(String[] str){
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
public void show(int i,String ...strs){
}
3、关于变量赋值
- 如果是基本数据类型变量,此时赋值的是变量所保存的变量值
- 如果是引用数据类型变量,此时赋值的是变量所保存的数据的地址值
public class HelloWorld {
public static void main(String[] args) {
PassObject p = new PassObject();
p.printAreas(new Cricle(),5);
}
}
class Cricle{
double radius;
public double findArea(){
return Math.PI*radius*radius;
}
}
class PassObject{
public void printAreas(Cricle c,int time){
System.out.println("radius\t\tareas");
for(int i=1;i<=time;i++){
c.radius = i;
double area = c.findArea();
System.out.println(area+"\t\t"+i);
}
}
}