一道关于面向抽象的Java题

定义一个抽象类Person,它包含私有的成员变量name,name通过构造方法来初始化。它还包含用来获取姓名的普通成员方法getName()和用来描述人的抽象方法getDescription()。

从Person类派生出Employee类和Student类,Employee类拥有新的私有成员变量department, Student类拥有新的私有的成员变量school。这两个类都用getDescription方法来进行描述。其中Employee类的描述是输出“在xx部门工作的职工”;Student类的描述是输出“在xx学院上学的学生”。

创建一个主类PersonDemo,主类中有introduce方法,该方法的参数是一个Person类的对象,输出是这个人的姓名和描述。主类中有main方法,该方法有如下内容:

①首先声明一个Person类的变量p,随后实例化一个Employee类的对象Tom,他的姓名为Tom.将Tom上转型为p, 调用getDescription()方法。

②通过实例化一个personDemo类的对象来调用introduce方法,并通过多态实现输出职工(王五,信息部)以及学生(李明,管理学院)的姓名和描述。



public abstract class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public abstract String getDescription();
}


public class Employee extends Person {
    private String department;

    public Employee(String name, String department) {
        super(name);
        this.department = department;
    }

    @Override
    public String getDescription() {
        return "在" + department + "部门工作的职工";
    }
}


public class Student extends Person {
    private String school;

    public Student(String name, String school) {
        super(name);
        this.school = school;
    }

    @Override
    public String getDescription() {
        return "在" + school + "学院上学的学生";
    }
}

public class PersonDemo {
    public static void introduce(Person person) {
        System.out.println(person.getName() + " " + person.getDescription());
    }

    public static void main(String[] args) {
        Person p;

        Employee Tom = new Employee("Tom", "信息部");
        p = Tom;
        System.out.println(p.getDescription());

        introduce(new Employee("王五", "信息部"));
        introduce(new Student("李明", "管理学院"));
    }
}

稍等,我写试试