• PTA-6-42 设计门票(抽象类)


    题目:

    某学校举办一次活动,需要凭票参加,每张票都有票号和售价。
    门票分为3类:当天票,预订票和学生预订票。
    当天票价格50。
    预订票,提前时间>10天的,售价30;提前10天以内的,售价40;
    学生预订票,提前时间>10天的,售价15;提前10天以内的,售价20。

    (1)编写抽象类Ticket类,包含以下成员
    ①属性:
    number:私有,int型,表示票号;
    ②方法:

    1. Ticket(int number), 构造方法,初始化票号;
    2. int getPrice(), 返回票价,抽象方法;
    3. String toString(),返回一个字符串,格式为“Number:票号,Price:票价”。

    (2)编写Ticket类的子类WalkupTicket,表示当天票,包含以下成员
    ①方法:
    1)WalkupTicket(int number), 构造方法,初始化票号;
    2)int getPrice(), 返回票价50。

    (3)编写Ticket类的子类AdvanceTicket,表示预订票,包含以下成员
    ①属性:

    1. leadTime:私有,int型,表示提前预订的天数;
      ②方法:
    2. AdvanceTicket(int number,int leadTime), 构造方法,初始化票号和提前天数;
    3. int getPrice(), 如果提前天数>10天,票价30,否则,票价40。

    (4)编写AdvanceTicket类的子类StudentAdvanceTicket,表示学生预订票,包含以下成员
    ①属性:

    1. height:私有,int型,表示购票学生的身高(单位厘米);
      ②方法:
      1)StudentAdvanceTicket(int number,int leadTime,int height), 构造方法,初始化票号、提前天数和身高;
      2)int getPrice(),

      如果学生身高>120:提前天数>10天,票价20,否则,票价30。
      如果学生身高<=120,票价是身高120以上学生的对折。

    题目给出裁判测试程序样例如下:

    1. public class Main{
    2. public static void main(String args[]) {
    3. Scanner in = new Scanner(System.in);
    4. Ticket a = new WalkupTicket(in.nextInt());
    5. System.out.println(a.toString());
    6. Ticket b = new AdvanceTicket(in.nextInt(), in.nextInt());
    7. System.out.println(b.toString());
    8. Ticket c = new StudentAdvanceTicket(in.nextInt(), in.nextInt(), in.nextInt());
    9. System.out.println(c.toString());
    10. }
    11. }

    通过阅读题目,我们可以从中提炼出以下几点实现要求:

    1、编写抽象类Ticket类,来初始化票号,返回票价以及返回一个字符串

    2、编写Ticket类的子类WalkupTicket用于表示当天票

    3、编写Ticket类的子类AdvanceTicket用于表示预定票

    4、编写AdvanceTicket类的子类StudentAdvanceTicket用于表示学生预订票

    代码实现如下:

    1. abstract class Ticket {
    2. private int number;
    3. public Ticket(int number) {
    4. this.number = number;
    5. }
    6. abstract int getPrice();
    7. public String toString() {
    8. return "Number:"+number+",Price:"+getPrice();
    9. }
    10. public int getNumber() {
    11. return number;
    12. }
    13. public void setNumber(int number) {
    14. this.number = number;
    15. }
    16. }
    17. class WalkupTicket extends Ticket {
    18. public WalkupTicket(int number) {
    19. super(number);
    20. }
    21. @Override
    22. int getPrice() {
    23. return 50;
    24. }
    25. }
    26. class AdvanceTicket extends Ticket {
    27. private int leadTime;
    28. public AdvanceTicket(int number,int leadTime) {
    29. super(number);
    30. this.leadTime = leadTime;
    31. }
    32. @Override
    33. int getPrice() {
    34. if(leadTime>10)
    35. return 30;
    36. else
    37. return 40;
    38. }
    39. }
    40. class StudentAdvanceTicket extends AdvanceTicket {
    41. private int height;
    42. int lead;
    43. public StudentAdvanceTicket(int number,int leadTime,int height) {
    44. super(number,leadTime);
    45. this.lead=leadTime;
    46. this.height = height;
    47. }
    48. @Override
    49. int getPrice() {
    50. if(height>120) {
    51. if(lead>10)
    52. return 20;
    53. else
    54. return 30;
    55. }
    56. else {
    57. if(lead>10)
    58. return 10;
    59. else
    60. return 15;
    61. }
    62. }
    63. }

    注:编写 toString方法返回字符串时需要注意输出格式不要错误。


    以上就是 PTA-6-42 设计门票(抽象类)的全部内容了,希望能对你有所帮助!

  • 相关阅读:
    docker笔记(一):安装、常用命令
    WSL2 静态ip地址
    java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署
    MindSpore易点通·精讲系列--数据处理之vision.c_transforms.Decode
    Hadoop
    中英文说明书丨IQ Products巨细胞病毒CMV感染检测试剂盒
    【云原生】Docker镜像的创建,Dockerfile
    C语言猜数字游戏详解及代码优化
    虚拟机NAL模式连接linux系统
    【从零开始学微服务】06.微服务架构的建设思路
  • 原文地址:https://blog.csdn.net/linsc_05/article/details/134469289