定义Person抽象类,Student类、Company类,Employee类。
Person类的属性:String name, int age, boolean gender
Person类的方法:

public Person(String name, int age, boolean gender);
public String toString();         //返回"name-age-gender"格式的字符串
public boolean equals(Object obj);//比较name、age、gender,都相同返回true,否则返回false

Student类继承自Person,属性:String stuNo, String clazz
Student类的方法:

/建议使用super复用Person类的相关有参构造函数
public Student(String name, int age, boolean gender, String stuNo, String clazz);
public String toString();         //返回 “Student:person的toString-stuNo-clazz”格式的字符串
public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true,则继续比较stuNo与clazz。

Company类属性:String name
Company类方法:

public Company(String name);
public String toString();         //直接返回name
public boolean equals(Object obj);//name相同返回true

Employee类继承自Person,属性:Company company, double salary
Employee类方法:

//建议使用super复用Person类的相关有参构造函数
public Employee(String name, int age, boolean gender, double salary, Company company);
public String toString();         //返回"Employee:person的toString-company-salary"格式的字符串
public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true。再比较company与salary。
//比较salary属性时,使用DecimalFormat df = new DecimalFormat("#.#");保留1位小数

编写equals方法重要说明:

1.对Employee的company属性的比较。要考虑传入为null的情况。如果company不为null且传入为null,返回false
2.对所有String字符类型比较时,也要考虑null情况。

提示

1.排序可使用Collections.sort
2.equals方法要考虑周全

main方法说明

1.创建若干Student对象、Employee对象。
输入s,然后依次输入name age gender stuNo clazz创建Student对象。
输入e,然后依次输入name age gender salary company创建Employee对象。
然后将创建好的对象放入List personList。输入其他字符,则结束创建。
创建说明:对于String类型,如果为null则不创建对象,而赋值为null。对于company属性,如果为null则赋值为null,否则创建相应的Company对象。

2。对personList中的元素实现先按照姓名升序排序,姓名相同再按照年龄升序排序。提示:可使用Comparable或Comparator

3.接受输入,如果输入为exit则return退出程序,否则继续下面步骤。

4.将personList中的元素按照类型分别放到stuList与empList。注意:不要将两个内容相同的对象放入列表(是否相同是根据equals返回结果进行判定)。

5.输出字符串stuList,然后输出stuList中的每个对象。

6.输出字符串empList,然后输出empList中的每个对象。

输入样例:

s zhang 23 false 001 net15
e wang 18 true 3000.51 IBM
s zhang 23 false 001 net15
e bo 25 true 5000.51 IBM
e bo 25 true 5000.52 IBM
e bo 18 true 5000.54 IBM
e tan 25 true 5000.56 IBM
e tan 25 true 5000.51 IBM
s wang 17 false 002 null
s wang 17 false 002 null
e hua 16 false 1000 null
s wang 17 false 002 net16
e hua 16 false 1000 null
e hua 18 false 1234 MicroSoft
!
continue

输出样例:

Employee:bo-18-true-IBM-5000.54
Employee:bo-25-true-IBM-5000.51
Employee:bo-25-true-IBM-5000.52
Employee:hua-16-false-null-1000.0
Employee:hua-16-false-null-1000.0
Employee:hua-18-false-MicroSoft-1234.0
Employee:tan-25-true-IBM-5000.56
Employee:tan-25-true-IBM-5000.51
Student:wang-17-false-002-null
Student:wang-17-false-002-null
Student:wang-17-false-002-net16
Employee:wang-18-true-IBM-3000.51
Student:zhang-23-false-001-net15
Student:zhang-23-false-001-net15
stuList
Student:wang-17-false-002-null
Student:wang-17-false-002-net16
Student:zhang-23-false-001-net15
empList
Employee:bo-18-true-IBM-5000.54
Employee:bo-25-true-IBM-5000.51
Employee:hua-16-false-null-1000.0
Employee:hua-18-false-MicroSoft-1234.0
Employee:tan-25-true-IBM-5000.56
Employee:tan-25-true-IBM-5000.51
Employee:wang-18-true-IBM-3000.51

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO 自动生成的方法存根Scanner cin = new Scanner(System.in);List<Person> personList = new ArrayList<>(30);List<Person> stuList = new ArrayList<>(30);List<Person> empList = new ArrayList<>(30);String s;while(true){s = cin.next();if(s.equals("s")){String name = cin.next();int age = cin.nextInt();boolean gender = cin.nextBoolean();String stuNo = cin.next();String clazz = cin.next();//Student peo = new Student(s,name,age,gender,stuNo ,clazz);personList.add(new Student(s,name,age,gender,stuNo ,clazz));}else if(s.equals("e")){String nameString = cin.next();int age = cin.nextInt();boolean gender = cin.nextBoolean();double salary = cin.nextDouble();String company = cin.next();Company company2 = new Company(company);if ("null".equals(company)) {personList.add(new Employee(s,nameString, age, gender, new Company("null"), salary));} else {personList.add(new Employee(s,nameString, age, gender, new Company(company), salary));}}else{break;}}//personList.sort(Comparator.comparing(Person::getName).thenComparingInt(Person::getAge));personList.sort((obj1, obj2) -> {if (obj1.getName().compareTo(obj2.getName()) < 0) {return -1;} else if (obj1.getName().compareTo(obj2.getName()) > 0) {return 1;} else {return obj1.getAge() - obj2.getAge();}});for (Person obj : personList) {System.out.println(obj.toString());}String sExit = "exit";String sReturn = "return";s = cin.next();while(true) {if(s.equals("return")||s.equals("exit")) {break;}else {//分组//判断过程要根据equals 是自己定义的 所以比较工资那有坑,用contains是不行的 所以还是循环比较吧boolean flag1=true;boolean flag2=true;for(int i=0;i<personList.size();i++) {if(personList.get(i).toString().indexOf("Student")>=0) {if(stuList.size()==0) {stuList.add(personList.get(i));}for(int j=0;j<stuList.size();j++) {if(personList.get(i).equals(stuList.get(j))){flag1=false;}}if(flag1) {stuList.add(personList.get(i));}flag1=true;}else {if(empList.size()==0) {empList.add(personList.get(i));}for(int j=0;j<empList.size();j++) {if(personList.get(i).equals(empList.get(j))){flag2=false;}}if(flag2) {empList.add(personList.get(i));}flag2=true;}}System.out.println("stuList");for(int i=0;i<stuList.size();i++) {System.out.println(stuList.get(i).toString()); }System.out.println("empList");for(int i=0;i<empList.size();i++) {System.out.println(empList.get(i).toString()); }break;} }}
}
class Person{private String zhiye;private String name;private int age;private boolean gender;public Person(String zhiye,String name, int age, boolean gender){this.zhiye = zhiye;this.name = name;this.age = age;this.gender = gender;}public String toString(){return name+"-"+age+"-"+gender;//返回"name-age-gender"格式的字符串}public boolean equals(Object obj){Person p = (Person)obj;if(this.name.equals(p.name) && this.age==p.age && this.gender == p.gender) return true;return false;//比较name、age、gender,都相同返回true,否则返回false}public String getZhiye() {return zhiye;}public void setZhiye(String zhiye) {this.zhiye = zhiye;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}}
class Student extends Person{private String stuNo;private String clazz;public Student(String zhiye,String name, int age, boolean gender, String stuNo, String clazz){super(zhiye,name, age, gender);this.stuNo = stuNo;this.clazz = clazz;}@Overridepublic String toString() {// TODO 自动生成的方法存根return "Student:"+super.toString()+"-"+stuNo+"-"+clazz;}@Overridepublic boolean equals(Object obj) {// TODO 自动生成的方法存根Student st = (Student) obj;if(super.equals(st)) {if(this.stuNo.equals(st.stuNo) && this.clazz.equals(st.clazz)) return true;}return false;}
}
class Company{String name;public Company(String name){this.name = name;}public String toString(){return name;//直接返回name}public boolean equals(Object obj){Company com = (Company)obj;if(this.name.equals(com.name)) return true;//name相同返回truereturn false;}
}
class Employee extends Person{Company company;double salary;public Employee(String zhiye,String name, int age, boolean gender, Company company, double salary){super(zhiye,name, age, gender);this.company =company;this.salary = salary;}public String toString(){return "Employee:"+super.toString()+"-"+company.toString()+"-"+salary;//返回"Employee:person的toString-company-salary"格式的字符串}public boolean equals(Object obj){if (obj == null) {return false;}Employee emm = (Employee)obj;if(super.equals(emm)){DecimalFormat p = new DecimalFormat("#.#");//数值按“#.#”格式输出,小数点后保留一位return this.company.equals(emm.company) && p.format(this.salary).equals(p.format(emm.salary));}return false;}
}

7-2 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company (15分)相关推荐

  1. 4.3 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company**

    4.3 jmu-Java-03面向对象-06-继承覆盖综合练习-Person.Student.Employee.Company 题目概况: 定义Person抽象类,Student类.Company类, ...

  2. java之面向对象:继承extends、super、覆盖override的用法

    继承的好处: 1 )提高了代码的复用性. 2 )让类与类之间产生了关系,给第三个特征多态提供 了前提. java支持单继承,不直接支持多继承,但对C++中的多继承机制进行改良. 单继承:一个子类只能有 ...

  3. java继承stu继承person_4.3 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company (20 分)中的一些问题...

    1.Employee类的equals 由于题目要求//首先调用父类的equals方法,如果返回true.再比较company与salary. //比较salary属性时,使用DecimalFormat ...

  4. 7-6 jmu-Java-03面向对象-06-继承覆盖综合练习

    写之前还是要先明确好程序编写的要求,以免过了样例但代码运行逻辑和要求不符合. 记录一个比较浮点型数据的方法 String df1 = new DecimalFormat("#.#" ...

  5. Java(10)面向对象之继承,内部类

    01 面向对象之继承 public class Inheritance02 {public class Person {/*** 昵称*/private String nickname;/*** 性别 ...

  6. 【JavaSE学习】03面向对象Java语法

    JavaSE(B站黑马)学习笔记 01Java入门 02数组.方法 03面向对象&Java语法 04-1Java高级(Stream流.异常处理.日志技术) 04-2Java高级(文件处理-IO ...

  7. java用继承编写宠物乐园_MoreThanJavaDay 5:面向对象进阶继承详解

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  8. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  9. Java面向对象(继承、抽象类)

    面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...

最新文章

  1. 使用Python3发送邮件测试代码
  2. 微信公众号开发小记——4.两种邀请用户的方式 扫码链接
  3. 40个比较重要的Android面试题
  4. java质因数算法_Java分解任意输入数的质因数算法的实现示例
  5. wxWidgets:wxLogNull类用法
  6. Code Complete
  7. 一文说通C#的属性Attribute
  8. 解决: idea 修改 jsp 后,页面刷新无效
  9. html中可以自定义属性,,,妈的竟然才知道..
  10. mysql 值到99999后不增值了_MySQL必知必会3
  11. 拜占庭将军问题深入探讨
  12. python如何保存图像_Python应用引擎:如何保存图像?
  13. C-free在编写代码的过程中遇到方向键失灵,回车键失灵,换行失灵,但是可以正常输入的解决办法!!!!!
  14. 【实践】一站式数据开发平台在有赞的最佳实践.pdf(附下载链接)
  15. [翻译]WPF控件库 MaterialDesignInXamlToolkit (2) Brush Names
  16. Silverlight与WCF错误处理:Server Not Found(1)
  17. 如何隐藏电脑下方工具栏个别图标_电脑下方隐藏小图标怎么设置
  18. 区块链学习——HyperLedger-Fabric v0.6环境搭建详细过程
  19. matlab中的颜色设置颜色,matlabpcolor设置颜色
  20. 蓝牙音乐之A2DP音频流

热门文章

  1. 导航菜单背景切换效果
  2. Qt 菜单背景设置颜色 菜单设置颜色
  3. 分销系统|分销商城小程序开发方式有什么?
  4. java面试题 sql_SQL 面试题目及答案 | java面试题
  5. define的边缘效应
  6. 【Python应用探索笔记二】百度语音合成与识别
  7. 百度云盘群组下载,细节操作让你摸不着头脑?
  8. 倒计时1天!亮点抢先看,2022京东云产业融合新品发布会
  9. Freedom and discipline
  10. 关于linux UART驱动和tty架构的理解