import java.util.*;public class EmpoyeeTest {

public static void main(String[] args) {
//fill the staff array with three Empoyee objects
Employee [] staff = new Employee[3];

staff[0] = new Employee("Carl Cracker",7500,1987,12,15);
staff[1] = new Employee("Harry Hacker",5000,1989,10,1);
staff[2] = new Employee("Tony Tester",4000,1990,3,15);

//raise everyone's salary by 5%
for(Employee e:staff)
e.raiseSalary(5);

//print out information about all Employee objects
for(Employee e : staff)
System.out.println("name =" +e.getName()
+",salary" + e.getSalary()
+ ",hireDay=" +e.getHireDay()); }
class Employee

{
public Employee(String n, double s, int year,int month,int day)
{
name = n;
salary = s;
GregorianCalendar calendar= new GregorianCalendar(year,month,day);
//GregorianCalendar uses 0 for january
hireDay = calendar.getTime();

}

public String getName()
{

return name;
}

public double getSalary()
{
return salary;
}

public Date getHireDay()
{
return hireDay;
}

public void raiseSalary(double byPercent)
{
double raise = salary * byPercent/100;
salary += raise;
}

private String name;
private double salary;
private Date hireDay;
}
}这样出现外层实例无法访问的问题。。
是因为不小心把。。最后 一个括号把Employee类也给包括进去了。。有人能讲一下出错的原理不。。吼吼。。

解决方案 »

  1.   

    这是一个内部类的问题,外部要访问这个内部类的话,它应该是public的。
      

  2.   

    其实不是这个原因!
    因为,你要实例化非静态内部类的话需要一个外部类的引用!除非它是静态内部类!改为! EmpoyeeTest et = new EmpoyeeTest();
            staff[0] = et.new Employee("Carl Cracker", 7500, 1987, 12, 15);
            staff[1] = et.new Employee("Harry Hacker", 5000, 1989, 10, 1);
            staff[2] = et.new Employee("Tony Tester", 4000, 1990, 3, 15);