定义一个抽象类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方法,并通过多态实现输出职工(王五,信息部)以及学生(李明,管理学院)的姓名和描述。
时间: 2024-03-16 11:46:49 浏览: 125
好的,这是一个非常基础的面向对象编程问题,我来帮你解答。
首先,这是Person类的定义:
```java
abstract class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public abstract String getDescription();
}
```
注意到Person类是一个抽象类,其中包含私有的成员变量name,以及用来获取姓名的普通成员方法getName()和用来描述人的抽象方法getDescription()。
Employee类和Student类都需要继承Person类,这里只给出Employee类的定义,Student类的定义与之类似:
```java
class Employee extends Person {
private String department;
public Employee(String name, String department) {
super(name);
this.department = department;
}
public String getDescription() {
return "在" + this.department + "部门工作的职工";
}
}
```
注意到Employee类和Student类都新增了一个私有成员变量,分别是department和school,以及对应的构造方法。
同时,这两个类都需要实现getDescription()方法,来描述自己。
最后,这是PersonDemo类的定义:
```java
class PersonDemo {
public void introduce(Person p) {
System.out.println(p.getName() + ":" + p.getDescription());
}
public static void main(String[] args) {
Person p = new Employee("Tom", "销售部");
PersonDemo demo = new PersonDemo();
demo.introduce(p);
p = new Student("李明", "管理学院");
demo.introduce(p);
}
}
```
注意到PersonDemo类包含了一个introduce方法,用来输出一个人的姓名和描述。
在main方法中,首先声明一个Person类的变量p,随后实例化一个Employee类的对象Tom,并将Tom上转型为p,最后调用introduce方法来输出Tom的姓名和描述。
接着,通过实例化一个PersonDemo类的对象来调用introduce方法,并通过多态实现输出职工(王五,信息部)以及学生(李明,管理学院)的姓名和描述。
希望这个答案能够帮助到你!
阅读全文