题目:
在黑马程序员中有很多员工(Employee)。
按照工作内容不同分教研部员工(Teacher)和行政部员工(AdminStaff)
教研部根据教学的方式不同又分为讲师(Lecturer)和助教(Tutor)
行政部根据负责事项不同,又分为维护专员(Maintainer),采购专员(Buyer)
公司的每一个员工都编号,姓名和其负责的工作
每个员工都有工作的功能,但是具体的工作内容又不一样。
(!!!java初学者,如有不对,请多指正!!!思米马赛)
- Employee
public class Employee {
private String id;
private String name;
private String work;
//构造方法
public Employee(){}
public Employee(String id,String name,String work){
this.id=id;
this.name=name;
this.work=work;
}
//get set
public String getId(){
return id;
}
public void setId(String id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getWork(){
return work;
}
public void setWork(String work){
this.work=work;
}
//成员方法
public void work(){
System.out.println(this.name+"在工作");
}
}
this.name ---> 调用当前引用对象的name
- Teacher
public class Teacher extends Employee{
public Teacher(){}
public Teacher(String id,String name,String work){
super(id, name, work);
}
@Override
public void work() {
System.out.println(this.getName()+"在展开教研工作");
}
}
Teacher继承的是Employee
Employee中已经有带有全部参数的构造方法,所以不用再写一遍
直接调用super(参1,参2,参3)
//super()和this()一样 必须写在构造方法的第一行
//这里参数不可以省略,因为省略后就调用的父类无参构造方法,没什么用啊
//提问:super()和this()只能在构造方法里调用吗???
this.getName()
this.成员属性/成员方法 ---> 调用当前引用对象的 成员属性/成员方法
父类中get()/set()都被public修饰了,所以在虚方法表中也就都被继承了
子类中也有getName()这个方法
this.getName() ---> 调用当前引用对象的getName()
- AdminStaff (这里类名写错了~~~发现的时候已经晚了不想改了)
public class AdminStrator extends Employee {
public AdminStrator(){}
public AdminStrator(String id,String name,String work){
super(id, name, work);
}
@Override
public void work() {
System.out.println(this.getName()+"在开展行政工作");
}
}
- Lecturer
public class Lecturer extends Teacher{
public Lecturer(){}
public Lecturer(String id,String name,String work){
super(id, name, work);
}
@Override
public void work() {
System.out.println(this.getName()+"在讲课");
}
}
- Tutor
public class Tutor extends Teacher{
public Tutor(){}
public Tutor(String id,String name,String work){
super(id, name, work);
}
@Override
public void work() {
System.out.println(this.getName()+"在助教");
}
}
- Maintainer
public class Maintainer extends AdminStrator{
public Maintainer(){}
public Maintainer(String id,String name,String work){
super(id,name,work);
}
public void work(){
System.out.println(this.getName()+"在维护设备");
}
}
- Buyer
public class Buyer extends AdminStrator{
public Buyer(){}
public Buyer(String id,String name,String work){
super(id,name,work);
}
public void work(){
System.out.println(this.getName()+"在采购设备");
}
}
- Test
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher("s001","lucy","教员部员工");
System.out.println(t.getId()+","+t.getName()+","+t.getWork());
t.work();
System.out.println("------------------------------------------");
AdminStrator a = new AdminStrator("s002","tom","行政部员工");
System.out.println(a.getId()+","+a.getName()+","+a.getWork());
a.work();
System.out.println("------------------------------------------");
Lecturer l = new Lecturer("s0011","amanda","讲师");
System.out.println(l.getId()+","+l.getName()+","+l.getWork());
l.work();
System.out.println("------------------------------------------");
Tutor t1 = new Tutor("s0012","bastar","助教");
System.out.println(t1.getId()+","+t1.getName()+","+t1.getWork());
t1.work();
System.out.println("------------------------------------------");
Maintainer m =new Maintainer("s0021","jeeny","维护专员");
System.out.println(m.getId()+","+m.getName()+","+m.getWork());
m.work();
System.out.println("------------------------------------------");
Buyer b= new Buyer("s0022","beny","采购专员");
System.out.println(b.getId()+","+b.getName()+","+b.getWork());
b.work();
}
}