重载形式java_java系列3:方法重载

例1:求绝对值

337e991674e5

求绝对值

1、什么是方法重载

用于定义一组方法,这些方法具有相同的名称,并执行类似的操作,但是却使用不同的参数列表;

编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法。

/*abs方法的重载*/

int abs(int x) {……}

float abs(float x) {……}

double abs(double x) {……}

long abs(long x) {……}

2、方法重载的3大原则

同一作用域

337e991674e5

属于不同作用域,不构成重载

方法名相同

参数不同

1、类型不同

2、数量不同

3、顺序不同

3、重载不考虑方法的返回值类型

方法重载和方法的返回值类型没有任何关系。也就是说,只有返回值不同的方法不能构成重载。

/*错误的方法重载*/

void fun(int x) {……};

int fun(int x) {……};

4、很多编程语言已经重载了输出方法,以便可以用相同的函数名称输出任何类型的数据。

5、请勿将功能完全不同的方法进行重载。

337e991674e5

方法重载-求绝对值

337e991674e5

例子

例:方法重载

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();

}

}

337e991674e5

运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值