java中该类内部类的实例

Sac*_*wal 4 java

在这里,我宣布同一类中的类动物实例.在c中它被认为是一个错误:

struct demo{
        int anyvar;
        struct demo anyvar1;
};
Run Code Online (Sandbox Code Playgroud)

因为它应该是一个无限的声明循环.

然后,为什么Java中允许这个代码?

class Animal{
    Animal object1 = new Animal();

    public static void main(String[] args)
    {     
            Animal obj = new Animal();
            obj.dostuff();
    }

    public void dostuff()
    {
           System.out.println("Compiles");
           object1.dostuff();
    }

    public void keepdoingstuff()
    {
             System.out.println("Doing Stuff...");

             object1.keepdoingstuff();
    }
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*ach 11

因为在Java中你声明一个包含引用值的变量; 一个指针.

这就像做:

struct demo{

    int anyvar;
    struct demo *anyvar1;
};
Run Code Online (Sandbox Code Playgroud)

java中的所有对象都是在堆上创建的,并且使用new关键字显式创建它们.

public class Node
{
   Node next;
   String value;

   public Node() { ... }

   ...
}
Run Code Online (Sandbox Code Playgroud)

next并且在对象被实例化时value自动初始化为并且将保持这样,直到为它们分配参考值.nullNode

  • 不想挑剔,但那不是*为什么会抛出StackOverflow错误.只有*一个*`动物'对象.问题是在方法中无限地递归并吹出堆栈.话虽如此,这也不是他所要求的.上述行为在运行时发生的事实不会使代码"不被允许"; 它编译得很好.他的困惑在于C结构和Java类中成员之间的区别 (2认同)
  • 我的直觉说最多只有一个"动物". (2认同)