以下摘自孙鑫的视频:class Garbage
{
int index;
static int count;
Garbage()
{
count++;
System.out.println("object "+count+" construct");
setID(count);
}

void setID(int id)
{
index=id;
}

protected void finalize()
{
System.out.println("object "+index+" is reclaimed");
}

public static void main(String[] args)
{
new Garbage();
new Garbage();
new Garbage();
new Garbage();
System.gc();
}
}我想问一下"setID(count);"是定义在函数里的,是什么函数都可以在另外一个函数里吗,还是这是一个特殊情况?哪位高手帮忙解释一下,在下先谢过了.

解决方案 »

  1.   

    ...那个不是定义,是调用,当执行到SetId(count)的时候就到本类中找这个SetId(int id)这个函数,把count当做函数参数int id中的ID传入进行运算
    int index; 
    static int count; 
    Garbage() 

    count++; 
    System.out.println("object "+count+" construct"); 
    setID(count); 当执行到这里的时候执行下面的1----
    //到这里你可以System.out.println(index+"="+count);
    //看看这个INDEX是不是和count相等.就是因为调用下面的函数.
    //记得这里使用红色的部分叫做调用.不是在另外函数体内.

    ----//1开始执行这里
    void setID(int id) 

    index=id; 
      

  2.   

    setID(count);这个并不是定义函数,而是调用外面定义过的函数
    ..
      

  3.   

    Garbage中的setID(count);调用下面构造函数外的
    void setID(int id) 

    index=id; 

    给index赋值为count的值
      

  4.   

    Yes, the method you defined can be invoked anywhere if available.
      

  5.   

    Garbage中的setID(count);调用下面构造函数外的 
    void setID(int id) 

    index=id; 

    给index赋值为count的值,怎么能是定义函数呢,好好学学基础吧。
      

  6.   

    setID(count); 
    这是调用函数啊!调用下边定义的setID()函数:
    void setID(int id)
    {
        index=id;

    将count的值赋给Garbage 类的属性 index