Java学习之重载及其作用

Java学习之重载及其作用

1.含义

在Java中,如果有功能类似,可以使用相同的名字来定义不同功能方法

不同功能: 主体功能相同,参数不同

参数不同: 数量、类型、顺序不同(满足其一即可)

2.作用

调用函数的时候,根据参数表可以自动调用对应的函数。因此不用为了对不同的参数类型或参数个数,而写多个函数。


1.基本类型的重载

class Operate{
  void operate(int i){}//整型
  void operate(double i){}//浮点型
  void operate(String i){}//字符型
  void operate(long i){}//长整型
}

通过这个类,能够准确找到对应基本类型相应的operate()方法。

但是如果参数类型无对应的方法时,会发生类型升级

类型升级: 当无法精准找到对应的方法时,可以允许提升数据类型,来找到最合适的方法执行。

例如Operate.operate(char a) 参数类型为char,就会直接把char类型转换为int类型,调用operate(int i)方法。

类型升级的原则:
char/short --> int

int --> long/float/double

​ long --> float/double

​ float -->double

即: 类型小,无匹配方法,先变大再匹配;类型大,先缩小再匹配。

注意: 类型大,只能手动去强制降级,数据的值可能发生变化,但是编译器不报错。

2.方法重载

在Java中,同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载(method overloading)。

举例:

public class Example {
	//一个普通得方法,不带参数,无返回值
	public void add(){
		//主体
	}
	//重载上面的方法,并且带了一个整形参数,无返回值
	public void add(int a){
		//主体
	}
  //重载上面的方法,并且带了两个整型参数,返回值为int型
	public int add(int a,int b){
		//主体
		return 0;
	} 
}

总结:

1.方法名称必须相同。

2.参数列表必须不同。

3.方法的返回类型可以相同也可以不同。

4.仅改变方法的返回类型不是方法的重载。

注意事项:

1.声明为final的方法不能被重载。

2.声明为static的方法不能被重载。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java不直接支持运算符重载。运算符重载是指为类定义自定义的运算符行为。然而,通过使用Manifold扩展依赖项,可以在Java中实现类似的功能。Manifold扩展依赖项允许您通过实现预定义的运算符方法来为类提供算术、关系和单位运算符的功能。您可以直接在您的类中实现这些运算符方法,也可以使用扩展方法为您原本无法控制的类实现运算符。例如,您可以使用Manifold扩展方法为BigDecimal提供运算符实现,从而可以像这样编写代码:BigDecimal result = bigValue1 + bigValue2。\[1\] Java不直接支持运算符重载的原因有几个方面。首先,运算符重载会使JVM变得复杂,并且可能导致性能下降。C++是一种支持运算符重载的语言,但是C++的性能在任何时代都可以秒杀Java。其次,Java的设计目标之一是便于静态分析和工具化。运算符重载是一种动态特性,而动态语言的形式化静态分析方法已经有成熟的方法论。最后,Java是一种面向对象的语言,而不是像Ruby那样彻底面向对象的语言。虽然Ruby对运算符重载的支持非常优秀,但Java更注重在对象之间进行消息传递和方法调用。\[2\] 虽然Java不直接支持运算符重载,但您可以通过定义方法来实现类似的功能。例如,您可以定义一个plus()方法来执行加法操作。这样,您可以像这样使用plus()方法:Point result = point1.plus(point2)。您还可以定义多个plus()方法,以便接受不同类型的参数。例如,您可以定义一个plus()方法,接受一个int数组作为参数,并返回一个新的Point对象。\[3\] #### 引用[.reference_title] - *1* *3* [java重载运算符_流形:Java的运算符重载](https://blog.csdn.net/diluan6799/article/details/106827567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [java重载_为什么Java不支持运算符重载?](https://blog.csdn.net/weixin_39632728/article/details/110741608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值