!a! 2022-12-16 16:46 采纳率: 100%
浏览 47
已结题

一道关于面向抽象的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方法,并通过多态实现输出职工(王五,信息部)以及学生(李明,管理学院)的姓名和描述。

  • 写回答

2条回答 默认 最新

  • 天天进步2015 2022-12-16 17:13
    关注
    
    
    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("李明", "管理学院"));
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助