2012-04-13 33 views
2

創建一個自定義的類我想在Java中創建自定義的類的對象,我創建,但它顯示一個錯誤......不知道爲什麼這個錯誤發生,請幫助我,因爲我開始學習Java前面...需要JAVA


    class main { 

    class student { 
     public int rollno; 
     public String name; 
     public int marks; 

     public void accept() { 
      rollno = 1; 
      name = "Pawan Mall"; 
      marks = 100; 
     } 

     public void display() { 
      System.out.println(rollno); 
      System.out.println(name); 
      System.out.println(marks); 
     } 

    } 

    public static void main(String argv[]) { 
     student s = new student(); 
     s.accept(); 
     s.display(); 
    } 

} 

它是在編譯 時發生那是我遇到的錯誤,而我編譯代碼:

C:\Program Files\Java\jdk1.7.0_03\bin\student.java:28: error: non-static variable this cannot be referenced from a static context 
student s = new student(); 
      ^
1 error 

Tool completed with exit code 1 
+0

請縮進代碼,什麼是錯誤? – 2012-04-13 06:29:44

+0

什麼是錯誤?不要讓我們猜測。 – 2012-04-13 06:29:59

+0

當問問題時請說明您看到的錯誤(當您試圖編譯代碼?當你運行它?)和錯誤的文本。請修改您的問題以包含此信息。 – David 2012-04-13 06:30:48

回答

2

student類是main類中嵌套。由於您尚未將其聲明爲static,因此它是inner類。 The Java Tutorial說:

一個InnerClass的實例只能存在於一個OuterClass的實例中。

因爲這正是你正在嘗試做的,它失敗。

student類需要是靜態的,所以你可以在靜態情況下實例化。

class main { 

    static class student { 
     public int rollno; 
+0

謝謝我解決它我忘記使用它靜態 – 2012-04-13 08:03:25

-1

類名的第一個字符必須成爲資本。類的名稱和文件的名稱是相同的。在你的情況:「學生」 - >「學生」

+0

請參閱@David – 2012-04-13 06:42:24

+1

的答案,這肯定是不對的。你「應該」用上面的char來啓動你的類,但是你可以根據你的需要來編寫它:)這裏真正的問題是,他想創建一個內部類的實例。內部類不是靜態的,因此內部類只能在外部類存在時才存在,所以他必須創建兩個類,因此不允許創建內部類的實例。另一種解決方案是聲明內部靜態靜態,所以與外部類的綁定被破壞。 – zip 2012-04-13 06:47:44

+0

感謝您的澄清。我沒有看到完整的代碼。無論如何,我不知道java類可以從一個較高的字符開始。謝謝,我會在腦海中記下它。 :) – 2012-04-13 06:57:44

1

嘗試創建使用主類參考學生的實例這樣

main m = new main(); 

student s= m.new student();