题目:【Person、Student、Employee类】(注:此题在书上原题基础上有修改)设计一个名为Person的类和它的两个名为Student和Employee子类。

每个人都有姓名和电话号码。学生有年级状态(大一、大二、大三或大四)。将这些状态定义为常量。一个雇员有工资和受聘日期。定义一个名为MyDate的类,包含数据域:year(年)、month(月)和day(日)。将各个类的数据域进行封装,并设置合理的读写访问器。
覆盖每个类中的toString方法,返回类名及相应的类中可以获取的所有信息构成的字符串,如Person类的toString方法返回“Person类:姓名为* 电话为”;Student类的toString方法返回“Student类: 姓名为 电话为 年级为**”。

在Student和Employee两个类中分别加入displayObject()方法,可以打印出对学生和雇员的提示消息,提示学生“to (学生姓名):请按时交实验报告”,提示雇员“to (雇员姓名):请按时上班”。

目标输出任务:
 画出这些类的UML图。
 实现这些类。
 编写一个测试类,1)创建方法public static void m1(Person p),显示p的姓名;2)创建方法public static void m2(Person p),打印p的toString方法返回的字符串;3)创建方法public static void m3(Person p),如果p是Student类或者Employee类的实例,分别调用它们的displayObject();4)在主函数中创建Person、Student、Employee的对象实例,将它们均声明为Person类对象。将它们分别传入m1、m2和m3,体会多态。

//代码实现:

//Personl类
package shiyan51;

public class Person {

public String name;
public String PhoneNumber;public String getName() {return name;
}
public void setName(String name) {this.name = name;
}
public String getPhoneNumber() {return PhoneNumber;
}
public void setPhoneNumber(String phoneNumber) {PhoneNumber = phoneNumber;
}public Person(String name,String PhoneNumber){this.name=name;this.PhoneNumber=PhoneNumber;
}public String toString(){return "姓名为:"+name+"电话为:"+PhoneNumber;
}

}

//Student类
package shiyan51;public class Student extends Person {public String  Grade;public final static String  freshman ="大一";public final static String  sophomoreman="大二";public final static String junior="大三";public final static String senior="大四";public String getGrade() {return Grade;}public void setGrade(String Grade) {this.Grade = Grade;}public Student(String name,String PhoneNumber,String Grade){super(name,PhoneNumber);this.Grade=Grade;}public void displayObject(){System.out.println("to"+name+":请按时交实验报告");}public String toString(){return super.toString()+"年级为:"+Grade;}
}
//Employee类
package shiyan51;public class Employee extends Person {private double Salary; Mydate mydate;public int year;public int month;public int day;public void MyDate(int year,int month,int day){this.year=year;this.month=month;this.day=day;}public Employee(String Name,String PhoneNumber,double Salary,Mydate date){  super(Name,PhoneNumber);   this.Salary=Salary;mydate=date;}public double getSalary() {return Salary;}public void setSalary(double salary) {Salary = salary;}public void displayObject(){System.out.println("to"+name+":请按时上班");}public Mydate getMydate() {return mydate;}public void setMydate(Mydate mydate) {this.mydate = mydate;}public String toString() {  return super.toString()+"工资:"+Salary+" "+mydate.year+" "+mydate.month+" "+mydate.getDay();   }   }
//Mydate类
package shiyan51;public class Mydate  {public int year;public int month;public int day;public Mydate(int year, int month, int day) {this.year=year;this.month=month;this.day=day;}public void setYear(int year) {this.year = year;}public void setMonth(int month) {this.month = month;}public void setDay(int day) {this.day = day;}public int getYear(){return year;}public int getMonth(){return month;}public int getDay(){return day;}}

//test类
package shiyan51;

public class test {

public final static String  freshman ="大一";
public final static String  sophomoreman="大二";
public final static String junior="大三";
public final static String senior="大四";//创建三种方法输出目标
public static void m1(Person P){System.out.println("name of person:"+P.getName());
}
public static void m2(Person P){System.out.println(P.toString());
}public static void m3(Person p){if (p instanceof Student){((Student)p).displayObject();}else if(p instanceof Employee){((Employee)p).displayObject();}else{System.out.println(p.getName()+":没有被定义为学生或者雇员!");}
}//如果p是Student类或者Employee类的实例,分别调用它们的displayObject()public static void main(String[] args){Person p1 = new Student("morethansea","18373163669",freshman);Person p2 = new Employee("Steven","18354643537",2000,new Mydate(2012,12,2));Person p3 = new Person("Curry","14434643537");m2(p1);m2(p2);m2(p3);m1(p1);m1(p2);m1(p3);m3(p1);m3(p2);m3(p3);}

}

//实验截图:

《JAVA继承与多态》【Person、Student、Employee类】(注:此题在书上原题基础上有修改)设计一个名为Person的类和它的两个名为Student和Employee子类。相关推荐

  1. 学习-Java继承和多态之子类继承性

    第1关:学习-Java继承和多态之子类继承性 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:定义一个 Dog 类,继承 Animal 类(Animal 类已经定义),定义自己的性别属性, ...

  2. 学习-Java继承和多态之子类对象特点

    第1关:学习-Java继承和多态之子类对象特点 任务描述 相关知识 子类对象的特点 instanceof 运算符 编程要求 测试说明 任务描述 本关任务:使用 instanceof 运算符判断所指对象 ...

  3. java继承和多态的实验报告_Java继承与多态实验报告.doc

    Java继承与多态实验报告 西 安 邮 电 大 学 (计算机学院) 课内实验报告 实验名称: 继承与多态 专业名称: 计算机科学与技术 班 级: 计科1405班 学生姓名: 高宏伟 学 号: 指导教师 ...

  4. 学习-Java继承和多态之方法重载

    第1关:学习-Java继承和多态之方法重载 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:使用重载方法为 Student 类创建三个构造方法. 相关知识 Java 中重载是指一个类中可以 ...

  5. 头歌实践-Java继承与多态

    头歌实践作业 第1关:练习-Java继承和多态之final关键字 第2关:学习-Java继承和多态之对象类型的转换 任务描述 相关知识 向上转型 向下转型 编程要求 第3关:练习-Java继承和多态之 ...

  6. 学习-Java继承和多态之final关键字

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目:学习-Java继承和多态之final关键字. 任务:调试代码,对代码进行增添.删除和修改等操作,使得程序能够正常运行,输出结果请 ...

  7. 7.20在学生类student和教师类teacher 基础上再派生出一个助教类

    /*在学生类student和教师类teacher基础上 再派生出一个助教类TeachAssistant,一个助教既具有教师的特征, 又具有学生的特征,还有自己的新特征:工资(wage). 要求将助教类 ...

  8. 设计一个用于人事管理的“人员”类

    设计一个用于人事管理的(人员)类.考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号.性别.出生日期.身份证号等.其中"出生日期"声明为一个"日期"类内嵌 ...

  9. C++ 设计一个CStudent(学生)类,用链表实现

    1.设计一个CStudent(学生)类,并使CStudent类具有以下特点: a.有学生姓名.学号.程序设计.信号处理.数据结构三门课程的成绩: b.全部信息由键盘输入: c.通过成员函数统计学生平均 ...

  10. Java继承和多态——子类继承性

    类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 { }class 子类 extends 父类 { } 例子: cla ...

最新文章

  1. Ethercat解析(十一)之分布时钟
  2. Java图形界面设计——substance皮肤
  3. java script eval_java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)
  4. maven本地安装jar
  5. Oracle教程之管理UNDO(九)--如何解决Oracle ORA-01555错误
  6. 要注意了!这样使用MyBatis框架,被攻击了!
  7. Shell命令打包Android apk
  8. cam350怎么看顶层_CAM350软件怎么查看gerber文件 cam350导出gerber教程
  9. 基于PHP使用thinkphp开发的教学管理系统
  10. SpringMVC是什么?
  11. mysql创建子用户代码_mysql创设用户及受权
  12. 信息抽取之实体消歧,统一
  13. aso优化师是什么_连这些名词都不懂,还好意思说你是ASO优化师?
  14. 计算机无法自动排列,如何设置Excel表不能自动排序
  15. 中公教育python培训讲师面试题_【中公教育讲师面试题目|面试经验】-看准网
  16. python自带静态web服务器搭建代码实现(一)
  17. 旧书交易系统——第一次报告
  18. iphone免越狱插件_如何保护iPhone免受盗贼的侵害
  19. 电话号码中间四位隐藏
  20. Excel表格区域隐藏后怎么恢复

热门文章

  1. Element-UI下拉框select实现拼音搜索
  2. 微信html刷新页面,填坑——解决微信网页中刷新的问题
  3. 飞将军李广自杀:性格能力注定悲剧!(
  4. 咕咕数据港股实时行情数据
  5. 如何用PS缩小图片而清晰度不变?
  6. 电脑长时间不操作自动睡眠或休眠 - 解决方案
  7. pyodbc linux 乱码,关于python:无法在Linux上安装pyodbc
  8. h5 video标签
  9. 计算机组成原理变形补码计算
  10. Nacos 一致性协议:Distro协议