KaiquanMah commited on
Commit
a63c2ad
·
verified ·
1 Parent(s): 8afb4b9

public static Priced mostExpensive(ArrayList<Priced> list) {...}

Browse files
Week 6: Methods of OO Programming/10A. Interface Class as Variable Type+++ ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Although an object cannot be formed from an interface, an 'interface' can be used as a 'variable type'.
2
+ Such a variable can store a REFERENCE to 'ANY OBJECT THAT IMPLEMENTS the INTERFACE'.
3
+ However, note that ONLY OPERATIONS defined IN the INTERFACE can be called through such a variable.
4
+
5
+
6
+ Let’s examine a method named ‘mostExpensive’, which takes a list of ‘Priced’ type objects as a parameter.
7
+ The method finds the most expensive among these.
8
+
9
+ Below is a refresher on the interface class ‘Priced’:
10
+
11
+ interface Priced {
12
+ int givePrice();
13
+ }
14
+
15
+
16
+
17
+
18
+
19
+
20
+ The static method 'mostExpensive' now returns the element with the highest price from the given elements:
21
+
22
+ public static Priced mostExpensive(ArrayList<Priced> list) {
23
+
24
+ Priced mostExpensive = list.get(0);
25
+ for (Priced product : list) {
26
+
27
+ // 'product' object is from a class implementing the 'Priced' interface
28
+ // which can use the 'givePrice' method from the interface
29
+ if (product.givePrice() > mostExpensive.givePrice()) {
30
+ mostExpensive = product;
31
+ }
32
+ }
33
+ return mostExpensive;
34
+ }
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ The objects in the list can be of different types, the only REQUIREMENT is that EACH IMPLEMENTS the "Priced" interface.
44
+ Examples include the classes "Fruit", "Car" and "MovieTicket":
45
+
46
+ class Fruit implements Priced {
47
+ private String name;
48
+
49
+ public Fruit(String name) {
50
+ this.name = name;
51
+ }
52
+
53
+ @Override
54
+ public int givePrice() {
55
+ return 10;
56
+ }
57
+ }
58
+
59
+
60
+
61
+ class Car implements Priced {
62
+ private String brand;
63
+ private int price;
64
+
65
+ public Car(String brand, int price) {
66
+ this.brand = brand;
67
+ this.price = price;
68
+ }
69
+
70
+ @Override
71
+ public int givePrice() {
72
+ return price;
73
+ }
74
+ }
75
+
76
+
77
+
78
+ class MovieTicket implements Priced {
79
+ private String movie;
80
+ private int ageLimit;
81
+ private int price;
82
+
83
+ public MovieTicket(String movie, int ageLimit, int price) {
84
+ this.movie = movie;
85
+ this.ageLimit = ageLimit;
86
+ this.price = price;
87
+ }
88
+
89
+ @Override
90
+ public int givePrice() {
91
+ return price;
92
+ }
93
+ }
94
+
95
+
96
+
97
+
98
+
99
+ Let's create a few objects and call the method:
100
+ public static void main(String[] args) {
101
+ ArrayList<Priced> products = new ArrayList<>();
102
+ products.add(new Car("Mercedes", 15000));
103
+ products.add(new MovieTicket("Rambo 6", 21, 13));
104
+ products.add(new Fruit("Banana"));
105
+
106
+ Priced mostExpensive = mostExpensive(products);
107
+ }
108
+
109
+