设计一个包含5个类的Java程序,名为Person的父类有两个子类,学生类Student和员工类Employee。Employee类有两个子类,教师类Faculty和 职员类Staff。所有人都有编号ID、姓名和电子邮件地址。学生类Student有班级状态(大一、大二、大三或大四)。教师类Faculty有主讲课程、专业信息。职员类Staff有职务信息。覆盖每个类中的toString()方法,输出相应的类名、编号ID和姓名。
编写一个测试程序,随机创建5个Student、Faculty或Staff对象,放在一个数组或者Vector类对象中,依次调用他们的toString()方法显示信息。(提示,查询Java生成随机数方法;Java中对象容器类Vector。)
import java.util.Random;
import java.util.Vector;
class Person{
public int _ID;//ID
public String _email;//邮箱地址
public String _name;//姓名
Person(){}
Person(int id,String email,String name){//获取Person类对象的数据
this._ID=id;
this._email=email;
this._name=name;
}
public int getID(){//获取ID
return _ID;
}
public String getemail(){//获取邮箱地址
return _email;
}
public String getname(){//获取姓名信息
return _name;
}
public String toString(){//输出信息
return ("Person类:"+"\n"+"姓名:"+this._name+"\n"+"ID:"+this._ID+"\n"+"邮箱地址:"+this._email);
}
}
class Student extends Person{//继承Person类
//班级状态
String _grade;//年级
String _class;//班级
Student(){
}
Student(int id,String email,String name,String grade,String theclass){//获取Student类对象的数据
super(id,email,name);//使用super调用父类构造函数必须放在第一行(长知识了)
this._grade=grade;
this._class=theclass;
}
public String toString(){//输出信息
return ("Student类:"+"\n"+"姓名:"+this._name+"\n"+"ID:"+this._ID+"\n"+"邮箱地址:"+this._email+"\n"+_grade+"年级/"+_class);
}
}
class Employee extends Person{
public int _salary;//额外加个属性 工资 祝老师工资节节攀升,学长年薪百万
Employee(){}
Employee(int id,String email,String name,int salary){
super(id,email,name);//使用super调用父类构造函数必须放在第一行(长知识了)
this._salary=salary;
}
public String toString(){//打印输出信息
return ("Employee类:"+"\n"+"姓名:"+this._name+"\n"+"ID:"+this._ID+"\n"+"邮箱地址:"+this._email+"\n"+"工资待遇:"+_salary);
}
}
class Staff extends Employee{
String _work;//职务信息
Staff(){}
Staff(int id,String email,String name,int salary,String work){//职工类构造函数
super(id,email,name,salary);//使用super调用父类构造函数必须放在第一行(长知识了)
this._work=work;
}
public String toString(){//打印输出信息
return ("Staff类:"+"\n"+"姓名:"+this._name+"\n"+"ID:"+this._ID+"\n"+"邮箱地址:"+this._email+"\n"+"工资待遇:"+_salary+"\n"+"职务信息:"+_work);
}
}
class Faculty extends Employee{
String _lecture;//主讲课程
String _subject;//专业信息
Faculty(){}
Faculty(int id,String email,String name,int salary,String lecture,String subject){
super(id,email,name,salary);//使用super调用父类构造函数必须放在第一行(长知识了)
this._lecture=lecture;
this._subject=subject;
}
public String toString(){//打印输出信息
return ("Faculty类:"+"\n"+"姓名:"+this._name+"\n"+"ID:"+this._ID+"\n"+"邮箱地址:"+this._email+"\n"+"工资待遇:"+_salary+"\n"+"主讲课程"+_lecture+"专业信息"+_subject);
}
}
public class test107 {
public static void main(String args[]) {
Vector<Person>people=new Vector<Person>();//储存数据
for(int i=0;i<5;i++){
int IDrandom=(int)(Math.random()*1000000+100000);//随机生成ID
int gradeRandom=(int)(Math.random()*4+1);//随机生成年级
int classRandom=(int)(Math.random()*5+1);//随机生成班级
// int nameRandom = (int )(Math.random()*5);//随机生成名字
// int emailRandom = (int )(Math.random()*5);//随机生成名字
String grade;//年级
String classes;//班级
switch(gradeRandom){//具体年级变为字符串
case 1:grade="大一";break;
case 2:grade="大二";break;
case 3:grade="大三";break;
default:grade="大四";break;
}
switch(classRandom){//具体班级变为字符串
case 1:classes="一班";break;
case 2:classes="二班";break;
case 3:classes="三班";break;
case 4:classes="四班";break;
default:classes="五班";break;
}
Random random = new Random();//生成随机数
switch(random.nextInt(3)){//生成随机类
case 0:people.add (new Staff(IDrandom,"职工邮箱","职工名称",10000,"职员职位"));break;
case 1:people.add (new Student(IDrandom,"学生邮箱","学生名称",grade,classes));break;
case 2:people.add (new Faculty(IDrandom,"教师邮箱","教师名称",100000,"java","计算机科学与技术"));break;
}
}
for(int j=0;j<people.size();j++){
System.out.println(people.get(j).toString()+'\n');//toString打印输出
}
// 编写一个测试程序,随机创建5个Student、Faculty或Staff对象,
// 放在一个数组或者Vector类对象中,依次调用他们的toString()方法显示信息。
// (提示,查询Java生成随机数方法;Java中对象容器类Vector。)
}
}