Interfaces in Java.
import java.awt.*;
import java.util.*;
public class WeightedTest {
public static void main(String [] args) {
Vector v = new Vector();
// adding new elements:
WeightedRectangle wr = new WeightedRectangle();
wr.setBounds(100, 50, 10, 30);
v.add(wr);
wr = new WeightedRectangle();
wr.setBounds(100, 0, 5, 60);
v.add(wr);
wr = new WeightedRectangle();
wr.setBounds(30, 40, 50, 50);
v.add(wr);
Weighted w = max(v);
System.out.println("the max is: " + w);
WeightedPoint wp = new WeightedPoint();
wp.setLocation(10000, 10000);
v.add(wp);
w = max(v);
System.out.println("the max is: " + w);
}
public static Weighted max(Vector v) {
Weighted w = (Weighted) v.get(0);
for (int i = 1; i < v.size(); ++i) {
if (w.weight() < ((Weighted) v.get(i)).weight())
w = (Weighted) v.get(i);
}
return w;
}
}
class WeightedRectangle extends Rectangle implements Weighted {
public double weight() {
return height * width;
}
}
class WeightedPoint extends Point implements Weighted {
public double weight() {
return Math.sqrt(x * x + y * y);
}
}
interface Weighted {
public double weight();
}
This is an example from CSci 1211 course.