为何把packageTest.java中的import com.horstmann.core.java.*;改成import com.horstmann.corejava. Employee.java.才能编译通过,//packageTest.javaimport com.horstmann.corejava.*;
public class packageTest
{
public static void main (String[] args)
{
//because of the import statement, we don't have to 
//use com.horstmann.corejava.Employee here
Employee harry = new Employee ("Harry Hacker",50000,1989,10,1);
//raise salary by 5%
harry.raiseSalary(5);

//print out information about harry
System.out.println("name="+harry.getName()+",salary="+harry.getSalary());
}
}// Employee.java
package com.horstmann.corejava;
import java.util.*; class Employee
{  
   public Employee(String n, double s, int year, int month, int day)
   {  
      name = n;
      salary = s;
      GregorianCalendar calendar = new GregorianCalendar(year, month - 1, 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;
}

解决方案 »

  1.   

    ??? import com.horstmann.core.java.*;应该是import com.horstmann.core(.去掉)java.*;吧。
    写全也是:import com.horstmann.corejava.Employee(.java去掉);为什么用*,为什么用Employee?import com.horstmann.corejava.*;
    表示编译当前java文件时,去找包com.horstmann.corejava下的所有类,import com.horstmann.corejava.Employee;
    表示编译当前java文件时,去找包com.horstmann.corejava下的类Employee,我们通常使用前者,因为当前可能用到该包下一些类,而不仅仅是Employee一个类,这也是偷懒的写法。不过现在的IDE都很智能,可以识别我们在代码中使用了哪些类,自动在前面加import语句。(e.g. Eclipse)如果象你说的那样用前者会出错,原因可能:
    1.import其他包的时候也用了*号,而其他包中可能有一个Employee类。
    2.当前代码所在的包中可能有一个Employee类。