定义一个抽象类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("李明", "管理学院"));
}
}
稍等,我写试试