重载为什么与返回值无关

我以前和你一样,对java中为什么不能根据返回值进行重载,而只能根据方法的参数进行重载非常不理解。在网上看到各种答案都不能完全的说服我,直到有一天突然就想通了。
假设根据返回值可以进行方法重载,在类中写下这两个方法,如图所示:
在这里插入图片描述
编译直接报红,不通过。提示翻译过来是’testMethod()'已经定义在Main类中了,不要重复定义的意思。但是有人就会疑惑,他们的返回值类型不同啊,怎么能说是重复定义了呢?
为了解释这个问题,下面我们假设编译是通过的,不会出现报红的情况:

public class Main {

    public static void testMethod(){
    //假设编译通过
    }
    public static int testMethod(){
    }

    public static void main(String[] args) {
    	
		int i = testMethod();
		//这种情况还说的过去 知道是调用哪个方法
    	testMethod();
    	//但是这种情况,不管该方法有没有返回值都可以这么调用的。
    	//此时编译器就要去猜你到底想调用哪个方法呢?
    	//或许是因为编译器懒得去猜吧,干脆规定只是返回值不同的两个方法就看做是同一个方法,判定为重复定义,然后让你的方法编译不通过。
    	//所以说java中为什么不能根据返回值进行重载,现在应该明白了吧。
	}     

综上所诉:java中是不能根据返回值进行方法重载的。

原来微信打赏还可以备注哦

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值