日期:2014-05-20  浏览次数:20690 次

小虾米自学java不久遇到一个问题求教~
最近看张孝祥的视频讲解道面向对象时 他定义了一个person类如下:
  class person
{ int age;
  void shout
  {
  int age=60;
  System.out.println("my age is"+age);
  }
}

他讲解的时候说第二次定义的这个age会覆盖第一次定义的age变量,可是我记得java中是不准这种嵌套的同名变量定义的啊?
请问这算是嵌套的定义吗?谢谢各位大虾!

------解决方案--------------------
成员变量和局部变量之前不存在
两个统一方法内的局部变量就不行了
------解决方案--------------------
是这样子的。在程序设计语言里面
class person
{ int age;
void shout
{
int age=60;
System.out.println( "my age is "+age);
}
}
age的作用范围是类内,他在内存里面也是在类所在的地址里,而 第二个age是在方法里面定义的。方法的内存是共用的。也就是说,当用的该方法的时候,就会把这部分代码放到一个堆栈里面,这个时候在堆栈里面建立一个age的变量。但是,在这个堆栈里面,前面类定义的age还是可以调用的,但是,他默认会调用方法里面的age,如果想调用前面的age,一般都是this.age。还有,在方法调用完毕,内存释放堆栈,age又会在内存里面消失,直到下一次被调用。而类定义的age不会,他的生命周期是知道类被释放,也就是说,类在age就在。