我们可以从java中的main()方法访问非静态类吗?

时间:2017-08-20 20:21:33

标签: java oop static

在这种情况下,如果将Node类设为非静态类,则main方法将能够访问它。

class LinkedList
 {
    Node head; 


static class Node {
    int data;
    Node next;
    Node(int d)  { data = d;  next=null; } // Constructor
}


public static void main(String[] args)
{ ..............}
}

2 个答案:

答案 0 :(得分:0)

是的,如果从类中实例化对象,则可以从main方法访问Node类。你可以这样做:

class LinkedList {

    Node head;

    class Node {
        int data;
        Node next;
        Node(int d)  { data = d;  next=null; } // Constructor
    }


    public static void main(String[] args) {
        //Instantiate your object
        LinkedList.Node node = new LinkedList().new Node(0);
    }
}

答案 1 :(得分:0)

在您的情况下,Node是外部类LinkedList的内部类。它们有不同的风格。

  • as static
  • 为非静态

不同之处在于非静态类可以访问外部类的成员。为此,非静态类具有对外部类的隐式引用。

在您的情况下,使用非静态内部类会导致混淆,因为不同的Node实例可能引用不同的LinkedList。语义变得疯狂