0
点赞
收藏
分享

微信扫一扫

二阶段day01,【继承、抽象】

闲云困兽 2022-01-21 阅读 45

SE 第二阶段

题目3

将以下描述信息转换为java代码,实现打印结果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xOJZ3Wc-1642708791323)(D:\黑马V12\21年黑马3-9\01阶段:JavaSE进阶面授——15\01-JavaSE进阶面授\day01【复习回顾、继承、抽象类】\作业\imgs\wps333E.tmp.jpg)]

1、定义员工Employee类,该类具有如下成员:

(1) 属性:姓名(name,字符串类型),工号(workId,字符串类型),部门(dept,字符串类型),属性私有
(2) 方法:
		1. 空参数构造和满参数构造
		2. 提供属性的set/get方法
		3. 定义showMsg方法抽象方法

2、定义经理Manager类继承Employee类,该类具有如下成员:

(1) 属性:职员Clerk(该经理的职员)
(2) 方法:
		1. 空参数构造方法和满参数构造方法
		2. 属性的get和set方法
		3. 重写父类的showMsg方法,按照要求实现信息打印

3、定义职员Clerk类继承Employee类,该类具有如下成员:

(1) 属性:经理Manager(该职员的经理)
(2) 方法:
		1. 空参数构造方法和满参数构造方法
		2. 属性的get和set方法
		3. 重写父类的showMsg方法,按照要求实现信息打印

4、创建Test测试类,测试类中创建main方法,main方法中创建经理对象和职员对象,信息分别如下:

经理:工号为 M001,名字为 张小强,部门为 销售部
职员:工号为 C001,名字为 李小亮,部门为 销售部 

经理的职员为李小亮,职员的经理为张小强

分别调用经理的showMsg方法和职员的showMsg方法打印结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8N0VHS4-1642708791325)(D:\黑马V12\21年黑马3-9\01阶段:JavaSE进阶面授——15\01-JavaSE进阶面授\day01【复习回顾、继承、抽象类】\作业\imgs\wps333E.tmp.jpg)]

答案:

Employee类

package com.myExercise.inherit.topic_03;
/*
(1) 属性:姓名(name,字符串类型),工号(workId,字符串类型),部门(dept,字符串类型),属性私有
        (2) 方法:
        1. 空参数构造和满参数构造
        2. 提供属性的set/get方法
        3. 定义showMsg方法抽象方法
*/
public abstract  class Employee {
    private String name;    //姓名
    private String workId;    //工号
    private String dept;  //部门

    //定义抽象方法
    public abstract void showMsg();


    //空参方法
    public Employee(){

    }
    //满参方法
    public Employee(String name,String workId,String dept){
            this.name = name;
            this.workId = workId;
            this.dept = dept;

    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }

    public String getWorkId() {
        return workId;
    }

    public void setWorkId(String workId) {
        this.workId = workId;
    }

    public String getDept() {
        return dept;
    }

    public void setDept(String dept) {
        this.dept = dept;
    }
}

Manager类

package com.myExercise.inherit.topic_03;
//经理类

/*   (1) 属性:
                职员Clerk(该经理的职员)
     (2) 方法:
                1. 空参数构造方法和满参数构造方法
                2. 属性的get和set方法
                3. 重写父类的showMsg方法,按照要求实现信息打印
        */
public class Manager extends Employee{
                @Override
                public void showMsg(){
                    System.out.println(super.getDept()+":"+super.getName()+",员工编号:"+super.getWorkId());
                    System.out.println("他的职员是"+this.clerk);

}
    private  String clerk; //该经理的职员
    //空参构造方法
    public Manager(){
    }

    //满参构造方法
    public Manager(String clerk){

    }

    public Manager(String name, String workId, String dept, String clerk) {
        super(name,workId, dept);
        this.clerk = clerk;
    }

    //set&get方法
    public void setClerk(String clerk){
        this.clerk = clerk;
    }
    public String getClerk(){
        return this.clerk;
    }
}


Clerk类

package com.myExercise.inherit.topic_03;

public class Clerk extends Employee{
    private String manager;//该员工的经理
    @Override
    public  void showMsg(){
        System.out.println(super.getDept()+":"+super.getName()+",员工编号:"+super.getWorkId());
        System.out.println("他的经理是"+this.manager);
    }
    //空参构造方法
    public Clerk(){}
    //参数构造方法
    public Clerk(String manager){

    }

    public Clerk(String nmae, String workId, String dept, String manager) {
        super(nmae, workId, dept);
        this.manager = manager;
    }

    public void setManager(String manager){
        this.manager = manager;
    }
    public String getManager(){
        return this.manager;
    }
}

Text测试类

package com.myExercise.inherit.topic_03;
/* name;    //姓名
workId;    //工号
 dept;  //部门
 clerk; //该经理的职员
 */
public class Text {
    public static void main(String[] args) {
        //快捷键 给构造方法传参看数据类型的时候 用ctrl+p
      Manager manager01 = new Manager("张小强","M001","销售部","李小亮");
      manager01.showMsg();
      Clerk clerk01 = new Clerk("李小亮","C001","销售部","张小强");
      clerk01.showMsg();
      manager01.setName("小明");
      manager01.showMsg();
    }

}

遇见问题:

在最后输出的时候 传参失败

在这里插入图片描述

原因:

​ 我使用的 父类 满惨构造方法 接收数据

​ 满参构造方法,是自动生成的,方法体为空

​ 所以并没有接收到传递过去的数值,

​ 也可以用set 方法传递值。

举报

相关推荐

0 条评论