2012-04-13 5 views
2

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

코드를 들여 섞으십시오. 무엇이 오류입니까? –

+0

무엇이 오류입니까? 우리를 추측하지 마십시오. –

+0

질문을 할 때 오류가 표시되면 (코드를 컴파일하려고 할 때, 실행할 때?) 및 오류 텍스트를 표시하십시오. 이 정보를 포함하도록 질문을 편집하십시오. – David

답변

2

귀하의 student 클래스와 같은 기본 클래스 참조를 사용하여 학생의 인스턴스를 생성 해보십시오. static으로 선언하지 않았으므로 inner 클래스입니다.

InnerClass의 인스턴스는 OuterClass의 인스턴스 내에 존재 할 수 The Java Tutorial는 말한다.

정확하게하려는 것이므로 실패합니다.

student 클래스는 정적이어야하므로 정적 컨텍스트에서 인스턴스화 할 수 있습니다.

class main { 

    static class student { 
     public int rollno; 
+0

덕분에 내가 그것을 사용하는 것을 잊지 정적 –

-1

첫 번째 문자를해야합니다 자본이 되라. 파일 이름과 클래스 이름은 동일합니다. 당신이 경우 "학생"- main 클래스 내부 중첩입니다> "학생"

+0

@David –

+1

의 답을 보면 분명히 옳지 않습니다. 당신은 "당신의 클래스를 상위 숯으로 시작해야한다. 그러나 당신이 원하는대로 그것을 쓸 수있다."여기서 진정한 문제는 내부 클래스의 인스턴스를 만들고 싶다는 것이다. 내부 클래스는 정적이 아니므로 내부 클래스는 외부 클래스가있을 때만 존재할 수 있으므로 둘 다 생성해야하므로 내부 클래스의 인스턴스를 만들 수 없습니다. 또 다른 해결책은 inner calss를 정적으로 선언하는 것이므로 외부 클래스에 대한 바인딩이 손상됩니다. – zip

+0

설명해 주셔서 감사합니다. 전체 코드를 볼 수 없었습니다. 어쨌든, 자바 클래스는 이전에 상한 문자로 시작할 수 있을지 모르겠다. 고마워, 나는 그것을 내 마음 속에 간직 할 것이다. :) –

1

main m = new main(); 

student s= m.new student(); 
관련 문제