Tall Objects

class Building implements IsMetersTall {
    
    // Static one-of-a-kind Building objects.
    public static final Building EiffleTower = new Building(324.0);
    public static final Building EmpireStateBuilding = new Building(1454);
    public static final Building StatueOfLiberty = new Building(93.0);
    
    // Private field.
    private double metersTall;
    
    // Public constructors.
    public Building(int heightInFeet) {
        metersTall = heightInFeet * 0.3048;
    }
    public Building(double heightInMeters) {
        metersTall = heightInMeters;
    }
    
    // Public method.
    public double getMetersTall() {
        return metersTall;
    }
}

class Person implements IsMetersTall {

    // Static one-of-a-kind Person objects.   
    public static final Person AbrahamLincoln = new Person(6, 4);
    public static final Person TomCruise = new Person(5, 7);
    
    // Private field.
    private double metersTall;
    
    // Public constructors.
    public Person(int fullFeetTall, int fullInchesTall) {
        metersTall = (fullFeetTall + fullInchesTall / 12.0) * 0.3048;
    }
    public Person(double metersTall) {
        this.metersTall = metersTall;
    }
    
    // Public method.
    public double getMetersTall() {
        return metersTall;
    }
}

class Gnat implements IsMetersTall {

    // Gnat has no fields. (All gnats are alike.)

    // Since no other constructors are explicitly defined, Gnat has a
    // no-argument, default constructor that is implicitly defined.
    // See: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

    // Public method.
    public double getMetersTall() {
        return 0.001;
    }
}

// See: https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html
interface IsMetersTall {
    double getMetersTall();
}

class Comparator {
    public static double compareHeights(IsMetersTall a, IsMetersTall b) {
        return a.getMetersTall() - b.getMetersTall();
    }
}

public class TallObjects {
    public static void main(String args[]) {
        Gnat[] swarmOfGnats = new Gnat[100];
        for (int i = 0; i < swarmOfGnats.length; i++) {
          swarmOfGnats[i] = new Gnat();
        }
        Building myHouse = new Building(7.5);
        double difference = Comparator.compareHeights(
            swarmOfGnats[0], myHouse
        );
        System.out.println(difference);
    }
}