You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java方法重载代码运行原理咨询:为何输出结果为c?

为什么这段Java代码输出是"c"?

嘿,刚学Java第三天就碰到方法重载的问题,挺不错的!我来给你一步步拆解这段代码的运行机制,帮你搞懂为啥输出的是"c"~

首先先把你的代码贴出来方便对照:

class adarsh {
    private void print( ){
        System.out.println("a");
    }
    private void print(String str){
        System.out.println("b");
    }
    private void print(int x){
        System.out.println("c");
    }
    public static void main(String[] args){
        adarsh object = new adarsh();
        object.print(12);
    }
}

核心概念:方法重载(Method Overloading)

这段代码的关键就是Java的方法重载——简单说就是同一个类里可以有多个同名的方法,但它们的参数列表必须不一样(参数的类型、数量、顺序,只要有一个不同就行)。Java会根据你调用方法时传入的参数,自动匹配最对应的那个方法来执行。

代码运行的具体流程

  1. 程序启动,执行main方法
    当你运行这段代码时,Java虚拟机首先会执行main方法,这里先创建了一个adarsh类的对象object。

  2. 调用print方法,匹配重载版本
    接下来执行object.print(12);,这里传入的参数是12,这是一个int类型的整数。
    现在看类里的三个print方法:

    • 第一个print():没有参数,和传入12的调用不匹配
    • 第二个print(String str):需要字符串类型的参数,12是整数,也不匹配
    • 第三个print(int x):刚好接收int类型的参数,完全匹配!
  3. 执行匹配的方法,输出结果
    找到匹配的方法后,Java就会执行这个方法里的代码:System.out.println("c");,所以最终输出就是"c"。

额外补充:私有方法的调用问题

你可能会好奇,这些print方法都是private的,为啥main方法能调用?因为main方法也属于adarsh类本身,同一个类里的方法是可以访问类的私有成员(包括私有方法)的,所以这段代码能正常运行,不会有访问权限的问题。

内容的提问来源于stack exchange,提问作者ghost_83

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:31:36