黑马程序员技术交流社区
标题:
解释一下关于重载和实例变量
[打印本页]
作者:
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
内存中的状态图如下:
未命名.JPG
(20.63 KB, 下载次数: 1)
下载附件
2013-3-26 21:57 上传
value值在堆内存中初始化为value=10;method方法重载,第一个classA.method()调用第二个没有参数的方法,直接打印堆内存中的value值,即10;第二个classA.method(20)调用第一个有参数的方法,在栈内存中定义一个value并初始化传进来的整数值,value=20.然后执行打印语句,即20。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2