私はさまざまな種類のチケットを持つプログラムを持っています。私はTicket
、AdvanceTicket
、およびStudentAdvanceTicket
を持っています。私はチケットの価格$ 50、前売券$ 30と$ 40の両方のオプションを印刷しています)と、学生の前売券$ 15と$ 20の両方のオプションを印刷しています。継承のあるJavaチケットプログラム
両方のオプションは、条件がif daysAhead >= 10
です。
これを解決しようとしていますが、助けが必要です。
Ticket.java
public class Ticket {
private int number;
public Ticket(int number) {
this.number = number;
}
public double getPrice() {
return 50.0;
}
public String toString() {
return "Ticket #" + this.number + ", Price: $" + this.getPrice();
}
}
TicketMain.java
public class TicketMain {
public static void main(String[] args) {
Ticket[] tickets = new Ticket[5];
tickets[0] = new WalkupTicket(1);
tickets[1] = new AdvanceTicket(2,12);
tickets[2] = new AdvanceTicket(3,8);
tickets[3] = new StudentAdvanceTicket(4,17);
tickets[4] = new StudentAdvanceTicket(5,7);
for (int i = 0; i<5; i++) {
System.out.println(tickets[i]);
//System.out.println(" ");
}
}
}
AdvanceTicket.java
public class AdvanceTicket extends Ticket {
private int daysAhead;
public AdvanceTicket(int number, int daysAhead) {
super(number);
this.daysAhead = daysAhead;
}
public double getPrice() {
if (daysAhead >= 10) {
return 30.00;
} else {
return 40.00;
}
}
public String toString() {
if (daysAhead >= 10) {
return super.toString() + " (" + this.daysAhead + " days ahead, you got a great deal!)";
} else {
return super.toString() + " (" + this.daysAhead + " days ahead, you could have saved a bit more)";
}
}
}
そして最後の問題... StudentAdvanceTicket.java
public class StudentAdvanceTicket extends AdvanceTicket {
public StudentAdvanceTicket(int number, int daysAhead) {
super(number, daysAhead);
super.price = super.getPrice()/2;
}
public String toString() {
return super.toString() + " (ID Required) ";
}
}
これは私の希望する出力です。あなたがStudentAdvanceTicket
ためgetPrice()
を呼び出すと
Ticket #1, Price: $50.0
Ticket #2, Price: $30.0 (12 days ahead, you got a great deal!)
Ticket #3, Price: $40.0 (8 days ahead, you could have saved a bit more)
Ticket #4, Price: $15.0 (ID Required)
Ticket #5, Price: $20.0 (ID Required)
あなたの問題は何ですか? – Justas
何が問題になるのかははっきりしません。 – freedev
'super.price' ??? 1.そのようなフィールドはありません。2.そのようなフィールドがあっても、継承クラスからprivateメンバーにアクセスすることはできません。 – alfasin