/**//** @version 1.00 2008-5-25 @author WANGYIFEI */ import java.text.*; publicclass PersonTest ...{ publicstaticvoid main(String[] args) ...{ Person[] people =new Person[2]; // fill the people array with Student and Employee objects people[0] =new Employee("Harry Hacker", 50000); people[1] =new Student("Maria Morris", "computer science"); // print out names and descriptions of all Person objects for (int i =0; i < people.length; i++) ...{ Person p = people[i]; System.out.println(p.getName() +", " + p.getDescription()); } } } abstractclass Person ...{ public Person(String n) ...{ name = n; } publicabstract String getDescription(); public String getName() ...{ return name; } private String name; } class Employee extends Person ...{ public Employee(String n, double s) ...{ // pass name to superclass constructor super(n); salary = s; } publicdouble getSalary() ...{ return salary; } public String getDescription() ...{ NumberFormat formatter = NumberFormat.getCurrencyInstance(); return"an employee with a salary of " + formatter.format(salary); } publicvoid raiseSalary(double byPercent) ...{ double raise = salary * byPercent /100; salary += raise; } privatedouble salary; } class Student extends Person ...{ /**//** @param n the student's name @param m the student's major */ public Student(String n, String m) ...{ // pass n to superclass constructor super(n); major = m; } public String getDescription() ...{ return"a student majoring in "+ major; } private String major; }