《JAVA继承与多态》【Person、Student、Employee类】(注:此题在书上原题基础上有修改)设计一个名为Person的类和它的两个名为Student和Employee子类。
题目:【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子类。相关推荐
- 学习-Java继承和多态之子类继承性
第1关:学习-Java继承和多态之子类继承性 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:定义一个 Dog 类,继承 Animal 类(Animal 类已经定义),定义自己的性别属性, ...
- 学习-Java继承和多态之子类对象特点
第1关:学习-Java继承和多态之子类对象特点 任务描述 相关知识 子类对象的特点 instanceof 运算符 编程要求 测试说明 任务描述 本关任务:使用 instanceof 运算符判断所指对象 ...
- java继承和多态的实验报告_Java继承与多态实验报告.doc
Java继承与多态实验报告 西 安 邮 电 大 学 (计算机学院) 课内实验报告 实验名称: 继承与多态 专业名称: 计算机科学与技术 班 级: 计科1405班 学生姓名: 高宏伟 学 号: 指导教师 ...
- 学习-Java继承和多态之方法重载
第1关:学习-Java继承和多态之方法重载 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:使用重载方法为 Student 类创建三个构造方法. 相关知识 Java 中重载是指一个类中可以 ...
- 头歌实践-Java继承与多态
头歌实践作业 第1关:练习-Java继承和多态之final关键字 第2关:学习-Java继承和多态之对象类型的转换 任务描述 相关知识 向上转型 向下转型 编程要求 第3关:练习-Java继承和多态之 ...
- 学习-Java继承和多态之final关键字
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目:学习-Java继承和多态之final关键字. 任务:调试代码,对代码进行增添.删除和修改等操作,使得程序能够正常运行,输出结果请 ...
- 7.20在学生类student和教师类teacher 基础上再派生出一个助教类
/*在学生类student和教师类teacher基础上 再派生出一个助教类TeachAssistant,一个助教既具有教师的特征, 又具有学生的特征,还有自己的新特征:工资(wage). 要求将助教类 ...
- 设计一个用于人事管理的“人员”类
设计一个用于人事管理的(人员)类.考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号.性别.出生日期.身份证号等.其中"出生日期"声明为一个"日期"类内嵌 ...
- C++ 设计一个CStudent(学生)类,用链表实现
1.设计一个CStudent(学生)类,并使CStudent类具有以下特点: a.有学生姓名.学号.程序设计.信号处理.数据结构三门课程的成绩: b.全部信息由键盘输入: c.通过成员函数统计学生平均 ...
- Java继承和多态——子类继承性
类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 { }class 子类 extends 父类 { } 例子: cla ...
最新文章
- Ethercat解析(十一)之分布时钟
- Java图形界面设计——substance皮肤
- java script eval_java ScriptEngine 使用 (支持JavaScript脚本,eval()函数等)
- maven本地安装jar
- Oracle教程之管理UNDO(九)--如何解决Oracle ORA-01555错误
- 要注意了!这样使用MyBatis框架,被攻击了!
- Shell命令打包Android apk
- cam350怎么看顶层_CAM350软件怎么查看gerber文件 cam350导出gerber教程
- 基于PHP使用thinkphp开发的教学管理系统
- SpringMVC是什么?
- mysql创建子用户代码_mysql创设用户及受权
- 信息抽取之实体消歧,统一
- aso优化师是什么_连这些名词都不懂,还好意思说你是ASO优化师?
- 计算机无法自动排列,如何设置Excel表不能自动排序
- 中公教育python培训讲师面试题_【中公教育讲师面试题目|面试经验】-看准网
- python自带静态web服务器搭建代码实现(一)
- 旧书交易系统——第一次报告
- iphone免越狱插件_如何保护iPhone免受盗贼的侵害
- 电话号码中间四位隐藏
- Excel表格区域隐藏后怎么恢复