2012-12-11 9 views
2

나는 자바에 새로운 오전이 오류 메시지가 계속 : 유형 Managesalary의자바 기본 급여 프로그램

없음 둘러싸는 인스턴스가 액세스 할 수 없습니다. 할당 유형을 Managesalary 유형으로 묶어야합니다 (예 : x.new A(), x는 Managesalary의 인스턴스 임). 줄에

public class Managesalary 
{ 
    public static void main(String[] args) 

    { 
     System.out.println("MY SALARY REVIEW"); 
     System.out.println("================"); 


    * Salary Jan= new Salary(); 
     Jan.Month= "JANUARY"; 
     Jan.HoursWorked= 12; 
     Jan.PerHourRate= 10; 
     Jan.TaxRate= 0.10; 

     Jan.printSalaryDetails(); 

     Salary Month2= new Salary(); 
     Month2.Month= "FEBUARY"; 
     Month2.PerHourRate= 10; 
     Month2.TaxRate= 0.10; 
     Month2.printSalaryDetails(); 

    } 

class Salary 
    { 
    String Month = ""; 
    int HoursWorked= 0; 
    int PerHourRate= 0; 
    double TaxRate= 0.10; 
    int MonthlySalary= (HoursWorked*PerHourRate); 

    public void printSalaryDetails(){ 
     System.out.println("MONTH OF = " +Month); 
     System.out.println("PER HOUR RATE = " +PerHourRate); 
     System.out.println("TAX RATE = " +TaxRate); 
     System.out.println("TOTAL MONTHLY INCOME = " +MonthlySalary); 
     System.out.println("================"); 
    } 
    } 
} 
+1

[Java - Foo 유형의 엔 클로징 인스턴스를 액세스 할 수 없음] 가능한 복제본 (http://stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-accessible) – Raedwald

답변

1

내부 클래스는 외부 클래스에 기존의 참조가 필요합니다 *. Managesalary의 인스턴스가 없으면 Salary을 인스턴스화 할 수 없습니다.

2

둘러싸는 클래스의 인스턴스를 참조하여 내부 클래스를 만들어야한다는 오류가 발생했습니다. (코드 들여 쓰기이 조금 숨기고 있지만)

ManageSalary mn = new Managesalary() 
Salary salary = mn.new Salary(); 
0

당신은 Managesalary의 내부 클래스와 Salary 클래스를 정의했습니다.

따라서 Salary의 각 인스턴스는 Managesalary의 인스턴스에 바인딩되어야합니다.

main 메서드에서 Managesalary (예 : ManageSalary ms = new ManageSalary())의 인스턴스를 만들고 내부 클래스 개체를 ms.new Salary()으로 초기화합니다.

2

클래스 Salary를 별도의 파일 이름 Salary.java로 복사하고 공용으로 설정하거나, 기본 클래스 외부에 배치하거나, ​​정적으로 선언하십시오.