例1:求絕對(duì)值
1肪虎、什么是方法重載
用于定義一組方法,這些方法具有相同的名稱对粪,并執(zhí)行類似的操作芯勘,但是卻使用不同的參數(shù)列表箱靴;
編譯器會(huì)根據(jù)調(diào)用時(shí)傳遞的實(shí)際參數(shù)自動(dòng)判斷具體調(diào)用的是哪個(gè)重載方法。
/*abs方法的重載*/
int abs(int x) {……}
float abs(float x) {……}
double abs(double x) {……}
long abs(long x) {……}
2荷愕、方法重載的3大原則
- 同一作用域
方法名相同
參數(shù)不同
1、類型不同
2安疗、數(shù)量不同
3抛杨、順序不同
3、重載不考慮方法的返回值類型
方法重載和方法的返回值類型沒有任何關(guān)系荐类。也就是說怖现,只有返回值不同的方法不能構(gòu)成重載。
/*錯(cuò)誤的方法重載*/
void fun(int x) {……};
int fun(int x) {……};
4玉罐、很多編程語言已經(jīng)重載了輸出方法屈嗤,以便可以用相同的函數(shù)名稱輸出任何類型的數(shù)據(jù)。
5吊输、請(qǐng)勿將功能完全不同的方法進(jìn)行重載饶号。
例:方法重載
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程序
//使用計(jì)算器Calculator.java程序
Calculator c = new Calculator();
int result = c.add(3, 5);
System.out.println
("兩數(shù)相加3和5,結(jié)果:"+result);
float result1 = c.add(3.2f, 5.6f);
System.out.println
("兩數(shù)相加3.2和5.6季蚂,結(jié)果:"+result1);
int result2 = c.add(11, 12, 25);
System.out.println
("三數(shù)相加11茫船、12、25扭屁,結(jié)果:"+result2);
}
}
6透硝、重載構(gòu)造方法
方法重載的一個(gè)重要應(yīng)用就是重載構(gòu)造方法。
可以定義一組構(gòu)造方法疯搅,使其構(gòu)成重載關(guān)系,從而方便使用者能夠靈活地以各種不同的方式來實(shí)例化對(duì)象埋泵。
例:
package test;
class MyTime { //定義時(shí)間類
private int mHour, mMinute, mSecond; //三個(gè)成員變量幔欧,時(shí)罪治、分、秒
public MyTime() { //構(gòu)造方法重載1
mHour = 0;
mMinute = 0;
mSecond = 0;
}
public MyTime(int hour) { //構(gòu)造方法重載2
mHour = hour;
mMinute = 0;
mSecond = 0;
}
public MyTime(int hour, int minute) { //構(gòu)造方法重載3
mHour = hour;
mMinute = minute;
mSecond = 0;
}
public MyTime(int hour, int minute, int second) { //構(gòu)造方法重載4
mHour = hour;
mMinute = minute;
mSecond = second;
}
public void display() { //顯示時(shí)間信息的方法
System.out.println(mHour + ":" + mMinute + ":" + mSecond);
}
}
/*測(cè)試時(shí)間類*/
public class Test
{
/*main方法礁蔗,程序入口*/
public static void main(String[] args)
{
//分別調(diào)用不同的構(gòu)造方法來初始化時(shí)間對(duì)象
MyTime t1 = new MyTime(); //調(diào)用重載方式1
t1.display();
MyTime t2 = new MyTime(8); //調(diào)用重載方式2
t2.display();
MyTime t3 = new MyTime(8, 30); //調(diào)用重載方式3
t3.display();
MyTime t4 = new MyTime(8, 30, 30); //調(diào)用重載方式4
t4.display();
}
}