1interface Bookable{
2 public void booked();
3 public void rejected();
4}
5class TicketBookingSite{
6 public static int maxTickets = 100;
7 Bookable obj;
8 // Constructor to initialize Bookable obj
9 public void startBooking(int tickets) {
10 if(tickets <= maxTickets) {
11 obj.booked();
12 maxTickets -= tickets;
13 }
14 else
15 obj.rejected();
16 }
17}
18
19class Audience implements Bookable{
20 String name;
21 int noTickets;
22 // Constructor initialize name and noTickets
23 public void getTickets() {
24 TicketBookingSite site = new TicketBookingSite(this);
25 site.startBooking(noTickets);
26 }
27 public void booked() {
28 System.out.println("You got "+this.noTickets+" tickets");
29 }
30 public void rejected() {
31 System.out.println("Tickets sold out");
32 }
33}
34public class CallBack {
35 public static void main(String[] args) {
36 Audience a1 = new Audience("A", 34);
37 Audience a2 = new Audience("B", 67);
38 Audience a3 = new Audience("C", 34);
39 a1.getTickets();
40 a2.getTickets();
41 a3.getTickets();
42 }
43}