import java.applet.Applet;
import java.awt.*;
import java.util.*;class Employee
{
int m_EmpNo; //雇员编号
String m_EmpName; //雇员姓名
char m_EmpGender; //雇员性别
double m_EmpSalary; //雇员工资
Date m_StartWorkDate; //开始工作日期
static final double m_MinSalary=250; //静态常量:最低工资
static int m_NextEmpNo;
static{m_NextEmpNo=1001;} //初始化静态成员变量
Employee() //构造方法
{
m_EmpNo=m_NextEmpNo++;
}
Employee(String name)
{
this();
m_EmpName=new String(name);
}
Employee(String name,double initSal)
{
this(name);
if(initSal<m_MinSalary)
System.exit(0);
m_EmpSalary=initSal;
}
int getEmpNo() //获取雇员编号
{
return m_EmpNo;
}
static double getMinSalary() //获取雇员最低工资
{
return m_MinSalary;
}
double getEmpSalary() //获取雇员工资
{
return m_EmpSalary;
}
boolean setEmpSalary(double newsal)
{//新工资大于等于最低工资才可以修改雇员工资
if(newsal>=getMinSalary())
{
m_EmpSalary=newsal;
return true;
}
else return false;
}
int workDays() //到目前为止的工作天数
{
return((int)(((new Date()).getTime()-m_StartWorkDate.getTime())
/(1000*3600*24)));
}
public String toString() //综合所有内部信息
{
String s;
s="编号: "+m_EmpNo+"姓名: "+m_EmpName;
if(m_EmpGender=='m')
s=s+";性别:男";
else
s=s+";性别:女";
return(s+":工资:"+m_EmpSalary+";工资天数:"+workDays());
}
}class CommonEmployee extends Employee //雇员的子类:一般雇员类
{
private double m_EmpBonus; //内部奖金
CommonEmployee() //构造方法
{
super();
}
CommonEmployee(String name)
{
super(name);
}
double getEmpBonus() //获取内部奖金
{
return m_EmpBonus;
}
void setEmpBonus(double newBonus) //修改内部奖金
{
m_EmpBonus=newBonus;
}
}class ManagerEmployee extends Employee //雇员的子类:主管类
{
Date m_WorkAsManager; //任现任主管的日期
static double m_MinSalary=800; //主管的最低工资
ManagerEmployee() //构造方法
{
super();
}
ManagerEmployee(String name,Date mdate)
{
super(name);
m_WorkAsManager=new Date(mdate.getTime());
}
static double getManMinSalary() //获取主管的最低工资
{
return m_MinSalary;
}
int workDays(Date startDate) //返回到目前位置的工作天数
{
return((int)(((new Date()).getTime()-startDate.getTime())
/(1000*3600*24)));
}
boolean addSalYearly() //每年为主管加薪,如果任期已满一年则加薪20%
{
if(workDays(m_WorkAsManager)>=365)
{
setEmpSalary(getEmpSalary()*1.2);
return true;
}
else
return false;
}
public String toString() //综合主管的所有信息
{
String s;
s=super.toString();
if(m_WorkAsManager!=null)
s=s+";任主管:"+(m_WorkAsManager.getYear()+1900)+"/"+
(m_WorkAsManager.getMonth()+1)+"/"+m_WorkAsManager.getDate();
return s;
}
}public class TestClass extends Applet
{
ManagerEmployee MgrEmp1;
CommonEmployee ComEmp1;
CommonEmployee ComEmp2;
public void init()
{
MgrEmp1=new ManagerEmployee("张予",new Date(92,6,5));
MgrEmp1.m_EmpGender='m';
MgrEmp1.m_StartWorkDate=new Date(90,4,8);
MgrEmp1.setEmpSalary(4500);
ComEmp1=new CommonEmployee();
ComEmp1.m_EmpName=new String("老李");
ComEmp1.m_EmpGender='m';
ComEmp1.m_StartWorkDate=new Date(89,9,8);
ComEmp1.setEmpSalary(2500);
ComEmp2=new CommonEmployee("王力");
ComEmp2.m_EmpGender='f';
ComEmp2.m_StartWorkDate=new Date(98,3,18);
ComEmp2.setEmpSalary(600);
ComEmp2.setEmpBonus(200);
}
public void paint(Graphics g)
{
String strt = "直接访问父类最低工资:";
strt = new String(strt.getBytes("iso-8859-1"),"gb2312") ;
//g.drawString(str + Employee.m_MinSalary,20,20);
g.drawString("调用继承自父类的方法访问父类的最低工资:"
+MgrEmp1.getMinSalary(),20,40);
g.drawString("直接访问子类--主管的最低工资:"
+MgrEmp1.m_MinSalary,20,60);
g.drawString("调用子类的方法访问子类的最低工资:"
+MgrEmp1. getManMinSalary(),20,80);
g.drawString("直接访问子类最低工资:"+ManagerEmployee.m_MinSalary,20,100);
g.drawString("主管信息:"+MgrEmp1.toString(),20,120);
g.drawString("雇员1信息:"+ComEmp1.toString(),20,140);
g.drawString("雇员2信息:"+ComEmp2.toString(),20,160);
}
}
import java.awt.*;
import java.util.*;class Employee
{
int m_EmpNo; //雇员编号
String m_EmpName; //雇员姓名
char m_EmpGender; //雇员性别
double m_EmpSalary; //雇员工资
Date m_StartWorkDate; //开始工作日期
static final double m_MinSalary=250; //静态常量:最低工资
static int m_NextEmpNo;
static{m_NextEmpNo=1001;} //初始化静态成员变量
Employee() //构造方法
{
m_EmpNo=m_NextEmpNo++;
}
Employee(String name)
{
this();
m_EmpName=new String(name);
}
Employee(String name,double initSal)
{
this(name);
if(initSal<m_MinSalary)
System.exit(0);
m_EmpSalary=initSal;
}
int getEmpNo() //获取雇员编号
{
return m_EmpNo;
}
static double getMinSalary() //获取雇员最低工资
{
return m_MinSalary;
}
double getEmpSalary() //获取雇员工资
{
return m_EmpSalary;
}
boolean setEmpSalary(double newsal)
{//新工资大于等于最低工资才可以修改雇员工资
if(newsal>=getMinSalary())
{
m_EmpSalary=newsal;
return true;
}
else return false;
}
int workDays() //到目前为止的工作天数
{
return((int)(((new Date()).getTime()-m_StartWorkDate.getTime())
/(1000*3600*24)));
}
public String toString() //综合所有内部信息
{
String s;
s="编号: "+m_EmpNo+"姓名: "+m_EmpName;
if(m_EmpGender=='m')
s=s+";性别:男";
else
s=s+";性别:女";
return(s+":工资:"+m_EmpSalary+";工资天数:"+workDays());
}
}class CommonEmployee extends Employee //雇员的子类:一般雇员类
{
private double m_EmpBonus; //内部奖金
CommonEmployee() //构造方法
{
super();
}
CommonEmployee(String name)
{
super(name);
}
double getEmpBonus() //获取内部奖金
{
return m_EmpBonus;
}
void setEmpBonus(double newBonus) //修改内部奖金
{
m_EmpBonus=newBonus;
}
}class ManagerEmployee extends Employee //雇员的子类:主管类
{
Date m_WorkAsManager; //任现任主管的日期
static double m_MinSalary=800; //主管的最低工资
ManagerEmployee() //构造方法
{
super();
}
ManagerEmployee(String name,Date mdate)
{
super(name);
m_WorkAsManager=new Date(mdate.getTime());
}
static double getManMinSalary() //获取主管的最低工资
{
return m_MinSalary;
}
int workDays(Date startDate) //返回到目前位置的工作天数
{
return((int)(((new Date()).getTime()-startDate.getTime())
/(1000*3600*24)));
}
boolean addSalYearly() //每年为主管加薪,如果任期已满一年则加薪20%
{
if(workDays(m_WorkAsManager)>=365)
{
setEmpSalary(getEmpSalary()*1.2);
return true;
}
else
return false;
}
public String toString() //综合主管的所有信息
{
String s;
s=super.toString();
if(m_WorkAsManager!=null)
s=s+";任主管:"+(m_WorkAsManager.getYear()+1900)+"/"+
(m_WorkAsManager.getMonth()+1)+"/"+m_WorkAsManager.getDate();
return s;
}
}public class TestClass extends Applet
{
ManagerEmployee MgrEmp1;
CommonEmployee ComEmp1;
CommonEmployee ComEmp2;
public void init()
{
MgrEmp1=new ManagerEmployee("张予",new Date(92,6,5));
MgrEmp1.m_EmpGender='m';
MgrEmp1.m_StartWorkDate=new Date(90,4,8);
MgrEmp1.setEmpSalary(4500);
ComEmp1=new CommonEmployee();
ComEmp1.m_EmpName=new String("老李");
ComEmp1.m_EmpGender='m';
ComEmp1.m_StartWorkDate=new Date(89,9,8);
ComEmp1.setEmpSalary(2500);
ComEmp2=new CommonEmployee("王力");
ComEmp2.m_EmpGender='f';
ComEmp2.m_StartWorkDate=new Date(98,3,18);
ComEmp2.setEmpSalary(600);
ComEmp2.setEmpBonus(200);
}
public void paint(Graphics g)
{
String strt = "直接访问父类最低工资:";
strt = new String(strt.getBytes("iso-8859-1"),"gb2312") ;
//g.drawString(str + Employee.m_MinSalary,20,20);
g.drawString("调用继承自父类的方法访问父类的最低工资:"
+MgrEmp1.getMinSalary(),20,40);
g.drawString("直接访问子类--主管的最低工资:"
+MgrEmp1.m_MinSalary,20,60);
g.drawString("调用子类的方法访问子类的最低工资:"
+MgrEmp1. getManMinSalary(),20,80);
g.drawString("直接访问子类最低工资:"+ManagerEmployee.m_MinSalary,20,100);
g.drawString("主管信息:"+MgrEmp1.toString(),20,120);
g.drawString("雇员1信息:"+ComEmp1.toString(),20,140);
g.drawString("雇员2信息:"+ComEmp2.toString(),20,160);
}
}
改一下加载Applet的部分就可以了。
例子如下:
<body bgcolor="#FFFFFF">
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="100%" height="100%" vspace="0" hspace="0" bgcolor= "#FFFFFF"
codebase="plugin/j2re-1_3_0_02-win-i.exe#Version=1,3,0,0">
<param name="code" value="test/TestApplet.class">
<param name="archive" value="test.jar">
<param name="type" value="application/x-java-applet;version=1.3">
<param name="encoding" value="gb2312">
</OBJECT>
</body>