黑马程序员技术交流社区

标题: 解释一下关于重载和实例变量 [打印本页]

作者: hg3093483    时间: 2013-3-26 21:31
标题: 解释一下关于重载和实例变量
本帖最后由 hg3093483 于 2013-3-27 20:36 编辑

class ClassA
{
     public void method(int value)
     {
          System.out.println(value);
     }
     public void method()
     {
          System.out.println(value);
     }
     int value;
}
class TestClassA
{
      public static void main(String args[])
      {
           ClassA classA = new ClassA();
           classA.value = 10;
           classA.method();
           classA.method(20);
      }
}
这个结果输出的什么?请解释一下
作者: 张东贤    时间: 2013-3-26 21:37
10   20


原因很简单

第一个  直接打印value

第二个  直接打印穿进去的value
作者: itserious    时间: 2013-3-26 21:48
package test;

class ClassA
{
     public void method(int value)//这个value是一个局部变量。
     {
          System.out.println(value);//访问局部变量。
     }
     public void method()
     {
          System.out.println(value);//访问成员变量。
     }
     int value;//定义成员变量。
}
class TestClassA
{
      public static void main(String args[])
      {
           ClassA classA = new ClassA();
           classA.value = 10;//初始化成员变量value的值。
           classA.method();//这是调用无参构造方法。
           classA.method(20);//这是调用有参构造方法。
      }
}
作者: 薛飞    时间: 2013-3-26 22:04
输出:10
         20
内存中的状态图如下:

value值在堆内存中初始化为value=10;method方法重载,第一个classA.method()调用第二个没有参数的方法,直接打印堆内存中的value值,即10;第二个classA.method(20)调用第一个有参数的方法,在栈内存中定义一个value并初始化传进来的整数值,value=20.然后执行打印语句,即20。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2