⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objectfiletest.java

📁 Java程序设计实验与实训源代码经典的JAVA学习教材
💻 JAVA
字号:
//ObjectFileTest.java
//程序保存并加载多个员工和经理对象(其中共享同一员工作为秘书)。
//注意重新加载后秘书对象是统一的--当newStaff[1]得到提薪时,秘书对象能够反映出来


import java.io.*;
import java.util.*;

class ObjectFileTest
{  
   public static void main(String[] args)
   {  
      Manager boss = new Manager("科凯", 80000,
         1987, 12, 15);
      boss.setBonus(5000);

      Employee[] staff = new Employee[3];

      staff[0] = boss;
      staff[1] = new Employee("何恒", 50000,
         1989, 10, 1);
      staff[2] = new Employee("童彤", 40000,
         1990, 3, 15);
      
      try
      {  
         // 存储所有员工记录到文件 employee.dat
         ObjectOutputStream out = new ObjectOutputStream(new 
            FileOutputStream("employee.dat"));
         out.writeObject(staff);
         out.close();

         // 重新得到所有的记录进入新数组
         ObjectInputStream in =  new ObjectInputStream(new 
            FileInputStream("employee.dat"));
         Employee[] newStaff = (Employee[])in.readObject();
         in.close();

         // 打印新读入员工记录
         for (int i = 0; i < newStaff.length; i++)
            System.out.println(newStaff[i]);
      }
      catch (Exception e)
      {  
         e.printStackTrace(); 
      }
   }
}

class Employee implements Serializable
{
   public 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 的一月从0 开始
      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;
   }

   public String toString()
   {  
      return getClass().getName()
         + "姓名=" + name
         + ",工资=" + salary
         + ",工龄=" + hireDay
         + "]";
   }

   private String name;
   private double salary;
   private Date hireDay;
}

class Manager extends Employee
{  
   /**
      @param n the employee's name
      @param s the salary
      @param year the hire year
      @param month the hire month
      @param day the hire day
   */
   public Manager(String n, double s,
      int year, int month, int day)
   {  
      super(n, s, year, month, day);
      bonus = 0;
   }

   public double getSalary()
   { 
      double baseSalary = super.getSalary();
      return baseSalary + bonus;
   }

   public void setBonus(double b)
   {  
      bonus = b;
   }

   public String toString()
   {
      return super.toString()
        + "[奖金=" + bonus
        + "]";
   }

   private double bonus;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -