java系列3:方法重载
2017-05-09 本文已影响0人
3e1094b2ef7b
例1:求绝对值
求绝对值1、什么是方法重载
用于定义一组方法,这些方法具有相同的名称,并执行类似的操作,但是却使用不同的参数列表;
编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法。
/*abs方法的重载*/
int abs(int x) {……}
float abs(float x) {……}
double abs(double x) {……}
long abs(long x) {……}
2、方法重载的3大原则
- 同一作用域
-
方法名相同
-
参数不同
1、类型不同
2、数量不同
3、顺序不同
3、重载不考虑方法的返回值类型
方法重载和方法的返回值类型没有任何关系。也就是说,只有返回值不同的方法不能构成重载。
/*错误的方法重载*/
void fun(int x) {……};
int fun(int x) {……};
4、很多编程语言已经重载了输出方法,以便可以用相同的函数名称输出任何类型的数据。
5、请勿将功能完全不同的方法进行重载。
方法重载-求绝对值 例子例:方法重载
Calculator.java:
public class Calculator {
public int add(int a, int b){
int result = 0;
result = a+b;
return result;
}
public float add(int a, float b){
float result = 0;
result = a+b;
return result;
}
public int add(int a, int b, int c){
int result = 0;
result = a+b+c;
return result;
}
public float add(float a, float b){
float result = 0;
result = a+b;
return result;
}
}
UseCalculator.java:
public class UseCalculator {
public static void main(String[] args) {
//UseCalculator.java程序
//使用计算器Calculator.java程序
Calculator c = new Calculator();
int result = c.add(3, 5);
System.out.println
("两数相加3和5,结果:"+result);
float result1 = c.add(3.2f, 5.6f);
System.out.println
("两数相加3.2和5.6,结果:"+result1);
int result2 = c.add(11, 12, 25);
System.out.println
("三数相加11、12、25,结果:"+result2);
}
}
6、重载构造方法
方法重载的一个重要应用就是重载构造方法。
可以定义一组构造方法,使其构成重载关系,从而方便使用者能够灵活地以各种不同的方式来实例化对象。
例:
package test;
class MyTime { //定义时间类
private int mHour, mMinute, mSecond; //三个成员变量,时、分、秒
public MyTime() { //构造方法重载1
mHour = 0;
mMinute = 0;
mSecond = 0;
}
public MyTime(int hour) { //构造方法重载2
mHour = hour;
mMinute = 0;
mSecond = 0;
}
public MyTime(int hour, int minute) { //构造方法重载3
mHour = hour;
mMinute = minute;
mSecond = 0;
}
public MyTime(int hour, int minute, int second) { //构造方法重载4
mHour = hour;
mMinute = minute;
mSecond = second;
}
public void display() { //显示时间信息的方法
System.out.println(mHour + ":" + mMinute + ":" + mSecond);
}
}
/*测试时间类*/
public class Test
{
/*main方法,程序入口*/
public static void main(String[] args)
{
//分别调用不同的构造方法来初始化时间对象
MyTime t1 = new MyTime(); //调用重载方式1
t1.display();
MyTime t2 = new MyTime(8); //调用重载方式2
t2.display();
MyTime t3 = new MyTime(8, 30); //调用重载方式3
t3.display();
MyTime t4 = new MyTime(8, 30, 30); //调用重载方式4
t4.display();
}
}
运行结果