6-4 设计门票(抽象类) (20分)

java旧题复习
6-4 设计门票(抽象类) (20分)
某学校举办一次活动,需要凭票参加,每张票都有票号和售价。
门票分为3类:当天票,预订票和学生预订票。
当天票价格50。
预订票,提前时间>10天的,售价30;提前10天以内的,售价40;
学生预订票,提前时间>10天的,售价15;提前10天以内的,售价20。

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

Ticket(int number), 构造方法,初始化票号;
int getPrice(), 返回票价,抽象方法;
String toString(),返回一个字符串,格式为“Number:票号,Price:票价”。
(2)编写Ticket类的子类WalkupTicket,表示当天票,包含以下成员
①方法:
1)WalkupTicket(int number), 构造方法,初始化票号;
2)int getPrice(), 返回票价50。

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

leadTime:私有,int型,表示提前预订的天数;
②方法:
AdvanceTicket(int number,int leadTime), 构造方法,初始化票号和提前天数;
int getPrice(), 如果提前天数>10天,票价30,否则,票价40。
(4)编写AdvanceTicket类的子类StudentAdvanceTicket,表示学生预订票,包含以下成员
①属性:

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

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

裁判测试程序样例:

public class Main{
     
    public static void main(String args[]) {
     
        Scanner in = new Scanner(System.in);
        Ticket a = new WalkupTicket(in.nextInt());
        System.out.println(a.toString());
        Ticket b = new AdvanceTicket(in.nextInt(), in.nextInt());
        System.out.println(b.toString());
        Ticket c = new StudentAdvanceTicket(in.nextInt(), in.nextInt(), in.nextInt());
        System.out.println(c.toString());
    }
}

/* 请在这里填写答案 */

按如下框架设计类后提交即可:

abstract class Ticket {
     
……
}
class WalkupTicket extends Ticket {
     
……
}
class AdvanceTicket extends Ticket {
     
……
}
class StudentAdvanceTicket extends AdvanceTicket {
     
……
}

输入样例:
输入票号,创建一个WalkupTicket对象。 输入票号和提前天数,创建一个AdvanceTicket对象。 输入票号、提前天数和身高,创建一个StudentAdvanceTicket对象。

1
2 10
3 11 130

输出样例:
输出创建的3个对象的票号和票价(调用toString()方法)。

Number:1,Price:50
Number:2,Price:40
Number:3,Price:20

答案:

import java.util.*;
public class PTA2 {
     

	 public static void main(String args[]) {
     
	        Scanner in = new Scanner(System.in);
	        Ticket a = new WalkupTicket(in.nextInt());
	        System.out.println(a.toString());
	        Ticket b = new AdvanceTicket(in.nextInt(), in.nextInt());
	        System.out.println(b.toString());
	        Ticket c = new StudentAdvanceTicket(in.nextInt(), in.nextInt(), in.nextInt());
	        System.out.println(c.toString());
	    }

}

abstract class Ticket {
     
	int number;
	public Ticket(int number) {
     
		this.number=number;
	}
	abstract public int getPrice();
	abstract public String toString();
}

class WalkupTicket extends Ticket {
     
	int price;
	public WalkupTicket(int number) {
     
		super(number);
		this.price=50;
	}
	
	public int getPrice() {
     
		return this.price;
	}
	
	public String toString() {
     
		return "Number:"+this.number+",Price:"+this.price;
	}
}

class AdvanceTicket extends Ticket {
     
	int leadTime;
	int price;
	public AdvanceTicket(int number,int leadTime) {
     
		super(number);
		this.leadTime=leadTime;
		if(leadTime>10)this.price=30;
		else           this.price=40;
	}
	
	public int getPrice() {
     
		return this.price;
	}
	public String toString() {
     
		return "Number:"+this.number+",Price:"+this.price;
	}
	
}
class StudentAdvanceTicket extends AdvanceTicket {
     
	int height;
	int price;
	public StudentAdvanceTicket(int number,int leadTime,int height) {
     
		super(number,leadTime);
		this.height=height;
		if(height>120) {
     
			if(leadTime>10)this.price=20;
			else           this.price=30;
		}else {
     
			if(leadTime>10)this.price=10;
			else           this.price=15;
		}
	}
	
	public int getPrice() {
     
		return this.price;
	}
	
	public String toString() {
     
		return "Number:"+this.number+",Price:"+this.price;
	}
}

你可能感兴趣的:(java)