方法的重载和重写
Java的编译器是根据可以根据参数来判断两个相同方法名的调用
当方法被使用者调用时 ,编译器会根据调用者传入的参数来判断使用哪个方法,与返回值无关
方法重载:
public void test(int a,int b){ //方法一
System.out.println(a+b);
}
public void test(double a,double b){ //方法二
System.out.println(a+b);
}
//第一次调用传入两个int类型的参数
test(10,20)
输出结果为:
30 //这里调用了方法一
//第二次调用传入两个double类型的参数
test(10.0,20.0)
输入结果为:
30.0 //这里调用了方法二
//第三次调用分别传入int类型的参数和double类型的参数
test(10,20.0);
输出结果为:
30.0 //这里调用了方法三
//由于其中一个参数为double型在编译时将传入的int类型参数自动转成double类型
- 方法名必须相同
- 方法中的参数不同 (参数类型 ,参数顺序, 参数数量)
- 参数相同仅返回值类型不同不构成方法重载
- 返回值类型可以相同也可以不同,重载与返回值无关
方法重写:
重写都是方法的重写与属性无关
方法重写一般发生在继承中
- 只有非静态的方法可以重写
- 方法名 方法参数 方法返回值类型必须全部相同
- 方法体不同(可以相同);
- 重写的方法的修饰符只能为public 当方法的修饰符为private时不能重写
为什么需要重写:
父类中的方法,子类可能不全部需要,或者子类需要的方法在父类中没有