广元市楚河网络科技有限公司
首页 | 联系方式 | 加入收藏 | 设为首页 | 手机站

产品目录

联系方式

联系人:业务部
电话: 00164-826657
邮箱:service@tanaosot.com

当前位置:首页 >> 新闻中心 >> 正文

每日一学(9)——完整的员工类

字号:
摘要:每日一学(9)——完整的员工类

案例介绍:

某IT公司有多名员工,按照员工负责的工作不同,进行了部门的划分(研发部员工、维护部员工)。研发部根据所需研发的内容不同,又分为JavaEE工程师、Android工程师;维护部根据所需维护的内容不同,又分为网络维护工程师、硬件维护工程师。

公司的每名员工都有他们自己的员工编号、姓名,并要做它们所负责的工作。

工作内容:

1、JavaEE工程师:员工号为xxx的 xxx员工,正在研发淘宝网站

2、 Android工程师:员工号为xxx的 xxx员工,正在研发淘宝手机客户端软件

3、网络维护工程师:员工号为xxx的 xxx员工,正在检查网络是否畅通

4、硬件维护工程师:员工号为xxx的 xxx员工,正在修复打印机

实现的功能点:

1、都是父类和子类的继承关系、四个子类都有共同的属性(name和ID)和方法(work)

2、name和ID需要进行封装private

3、父类的方法employee中的work需要抽象,因为每个员工实现的功能是不同的

4、类:一个父类employee、两个子类developer和maintainer,每个子类下面分别又有两个子类,developer的子类是Android和JavaEE,maintainer的子类是Hardware和Network。

5、对所有类的共性进行提取,共性name和ID,两个属性定义在Employee类中,其他的类通过构造方法,调用这两个属性

代码实现:

package day12;
/*
* 定义员工类
* 内容都是所有子类的共性抽取
* 属性:姓名 工号
* 方法:工作
*/
public abstract class Employee {
private String name;
private String ID;

public abstract void work();

public Employee(String name,String ID){//构造方法
this.name=name;
this.ID=ID;
}
public void getName(String name){
this.name=name;
}
public void getID(String ID){
this.ID=ID;
}
public String getName(){
return name;
}
public String getID(){
return ID;
}
}

package day12;
/*
* 定义研发员工类
*/

public abstract class Develper extends Employee {

public Develper(String name,String ID){//构造方法
super(name,ID);
}
public abstract void work();
}

package day12;
/*
* 定义维护员工类,属于员工中的一种
* 继承员工类
* 抽象类maintainer,可以给员工定义自己的属性
*/

public abstract class Maintainer extends Employee{

public Maintainer(String name,String ID){//构造方法
super(name,ID);
}
public abstract void work();
}

package day12;
/*
* 研发部员工的一种,继承研发部
*/
public class JavaEE extends Develper{
public JavaEE(String name,String ID){//构造方法
super(name,ID);
}
public void work(){
System.out.println("员工号为"+super.getID()+"的"+super.getName()+"员工"+"正在研发淘宝网站");
}

}

package day12;
/*
* 研发部员工的一种,继承研发部
*/
public class Android extends Develper{
public Android(String name,String ID){//构造方法
super(name,ID);
}
public void work(){
System.out.println("员工号为"+super.getID()+"的"+super.getName()+"员工"+"正在研发淘宝手机客户端软件");
}
}

此处省略另外两个类

package day12;
/*
* 测试类
*/
public class Test {
public static void main(String[] args) {
//创建JavaEE工程师的对象
JavaEE p1=new JavaEE("张三","001");
p1.work();
//创建Android工程师工程师的对象
Android p2=new Android("李四","002");
p2.work();
}

}

小总结:

构造方法的格式:修饰符 类名 (参数列表) {}

构造方法的特点:方法名与类名相同、没有返回值,也没有返回值类型,连void也没有

super: 指的是父类的存储空间(理解为父类的引用)

调用父类的成员变量:super.成员变量;

调用父类的构造方法:super(参数);

调用方法的成员方法:super.成员方法();

继承中的构造方法注意事项:

1,如果我们手动给出了构造方法,编译器不会在给我们提供默认的空参数构造方法

如果我们没写任何的构造方法,编译器提供给我们一个空参数构造方法

2, 在构造方法中,默认的第一条语句为 super();

它是用来访问父类中的空参数构造方法,进行父类成员的初始化操作

3,当父类中没有空参数构造方法的时候,怎么办?

a:通过 super(参数) 访问父类有参数的构造方法

b:通过 this(参数) 访问本类中其他构造方法

注意:[本类中的其他构造方法已经能够正常访问父类构造方法]

4,super(参数) 与 this(参数) 不能同时在构造方法中存在