自定义类

Employee

该自定义类代码如下:

class Employee
{
   private String name;
   private double salary;
   private LocalDate hireDay;

   public Employee(String n, double s, int year, int month, int day)
   {
      name = n;
      salary = s;
      hireDay = LocalDate.of(year, month, day);
   }

   public String getName()
   {
      return name;
   }

   public double getSalary()
   {
      return salary;
   }

   public LocalDate getHireDay()
   {
      return hireDay;
   }

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

测试代码如下:

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

      staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
      staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
      staff[2] = new Employee("Tony Tester", 40000, 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());
   }
}

这两个类是存放在一个文件中的:Employee类和带有public访问修饰符的EmployeeTest类。EmployeeTest类包含了main方法。

  • 源文件名时EmployeeTest.java,这是因为文件名必须与public类的名字相匹配。
  • 在一个源文件中,只能有一个公共类,但可以由任意数目的非公共类。

编译该文件后,会产生两个类文件:EmployeeTest.class以及Employee.class.

执行该程序:

java EmployeeTest

字节码解释器开始运行EmployeeTest类的main方法中的代码。

多个源文件的使用

习惯将每一个类存放在一个单独的源文件中。例如:将Employee类存放在文件Employee.java中,将EmployeeTest类存放在文件EmployeeTest.java中。

如何编译多个源文件,一种是使用通配符调用Java编译器:

javac Employee*.java

或者:

javac EmployeeTest.java

当java编译器发现EmployeeTest.java使用了Employee类,它会查找名为Employee.class的文件。如果么有找到这个文件,就会自动搜索Employee.java,然后,对它进行编译。更重要的是,如果Employee.java版本较已有的Employee.class文件版本更新,java编译器就会自动地重新编译这个文件。