Class and interface design. Method not determined
<p>I've created a super class (abstract) as it and its child classes inherit data from an interface (named Profitable). During compilation, an error is returned where it does not recognize method calcuateRevenue(). The method is declared in the interface, and then it is defined in the child classes (each class uses different means to calculate revenue). Since there are several classes, I will include the super class, one example of the child class, interface, and of course the main method (BradleyLangrehrP5). Am I missing something elementary, or is something designed terribly poorly?</p>

<pre><code>public class BradleyLangrehrP5
{
    public static void main(String[] args)
    {
        //Create movieArray list
        Movie[] movieArrayList = new Movie[6];

        //Instantiate movies from each subclass
        movieArrayList[0] = new Animated(.1, 5.0 , "Finding Nemo", 
                "Andrew Stanton", 2003, 90.0);
        movieArrayList[1] = new Animated(.08, 3.0, "Shrek", 
                "Andrew Adamson", 2001, 60.0);
        movieArrayList[2] = new Documentary(4.0, 2.5, 
                "Fidel: The Untold Story", "Estela Bravo", 2001, 72.0);
        movieArrayList[3] = new Documentary(6.0, 3.25, 
                "An Inconvenient Truth", "David Guggenheim", 2006, 1.0);
        movieArrayList[4] = new Drama(25, 4.5, "Red Lights", 
                "Rodrigo Cortes", 2012, 17.0);
        movieArrayList[5] = new Drama(15, 3.75, "The Godfather", 
                "Francis Ford Coppola", 1972, 6.5);
        displayNumberOfMoviesAndRevenue(movieArrayList);
    }

    public static void displayMovieArrayList(Movie[] movieArrayList)

    {

        for(int i = 0; i &lt; movieArrayList.length; i++)

        {

            System.out.println(movieArrayList[i].toString());

        }

    }


    public static void displayNumberOfMoviesAndRevenue(Movie[] movieArrayList)
    {
        for (int i = 0;i &lt; movieArrayList.length; i++)
        {
            System.out.println(movieArrayList[i].totalMovies());
            System.out.println(movieArrayList[i].calculateRevenue());
        }
    }
}

public class Movie
{
    private String title;
    private String director;
    private int year;
    private double productionCost;
    private static int totalMovies = 0;

    //Construct a default movie
    public Movie()
    {
        totalMovies++;
    }

    //Cosntruct movie with specific information
    public Movie(String title, String director, int year, double productionCost)
    {
        this.title = title;
        this.director = director;
        this.year = year;
        this.productionCost = productionCost;
        totalMovies++;
    }

    //Accessors
    public String getTitle()
    {
        return title;
    }

    public String getDirector()
    {
        return director;
    }

    public int getYear()
    {
        return year;
    }

    public double getProductionCost()
    {
        return productionCost;
    }

    public int totalMovies()
    {
        return totalMovies;
    }

    //Mutators
    public void setTitle(String title)
    {
        this.title = title;
    }

    public void setDirector(String director)
    {
        this.director = director;
    }

    public void setYear(int year)
    {
        this.year = year;
    }

    public void setProductionCost(double productionCost)
    {
        this.productionCost = productionCost;
    }

    //Effectors
    public String toString()
    {
        return "Movie: " + getTitle() + "was directed by " + getDirector() + 
                "with a production cost of " + getProductionCost();
    }
}

public final class Animated extends Movie implements Profitable
{
    private double royaltyRate;
    private double incomeRelatedProducts;

    //No arg constructor
    public Animated()
    {
        super();
    }

    //Constructor with arguments
    public Animated(double royaltyRate, double incomeRelatedProducts, String title,
            String director, int year, double productionCost)
    {
        super(title, director, year, productionCost);
        this.royaltyRate = royaltyRate;
        this.incomeRelatedProducts = incomeRelatedProducts;
    }

    //Accessors
    public double getRoyaltyRate()
    {
        return royaltyRate;
    }

    public double getIncomeRelatedProducts()
    {
        return incomeRelatedProducts;
    }

    //Mutators
    public void setRoyaltyRate(double royaltyRate)
    {
        this.royaltyRate = royaltyRate;
    }

    public void setIncomeRelatedProducts(double incomeRelatedProducts)
    {
        this.incomeRelatedProducts = incomeRelatedProducts;
    }

    //Effectors
    public double calculateRevenue()
    {
        return incomeRelatedProducts * royaltyRate;
    }

    public double calculateProfit()
    {
        double profit = calculateRevenue() - getProductionCost();
        return profit;
    }

    public String getCategory()
    {
        return "Animated";
    }

    public String toString()
    {
        return "This is an animated movie, and it is";
    }
}

public interface Profitable
{
    double calculateRevenue();
    double calculateProfit();
    String getCategory();
}//end of Profitable interface
</code></pre>
