Java

OOP GUIDE / WORK

 

FOOD SUPERCLASS SOLUTIONS

 

 

TASK – PART 1 – CREATING THE FOOD CLASS

 

Here is my solution:

 

 

public class Food

{

     protected String name;

     protected int amount;

     protected String units;

     protected String flavour;

    

     public Food(String n, String f, int a, String u)

     {

           name = n;

           flavour = f;

           amount = a;

           units = u;

     }

    

     public String howMuch()

     {

           return amount + " " + units;

     }

}

 

 

TASK – PART 2 – TESTING FOOD

 

A – BASIC TESTING

 

Here is my solution:

 

 

public class FoodTester

{

     public static void main(String[] args)

     {

           //A

           Food food = new Food("Cake", "sweet", 2, "slices");

           System.out.println(food.howMuch());  

     }

}

 

 

 

B – INHERITANCE FROM THE OBJECT CLASS

 

 

public class FoodTester

{

     public static void main(String[] args)

     {

           //A

           Food food = new Food("Cake", "sweet", 2, "slices");

           System.out.println(food.howMuch());

          

           //B

           System.out.println(food);

           Object obj = new Food("Lasagne", "savoury", 3, "pieces");

           //System.out.println(obj.howMuch());  //error

           Food f = (Food)obj;

           System.out.println(f.howMuch());     

     }

}

 

 

C – OVERRIDING METHODS

 

Here is my solution for the toString() method added to the Food class:

 

     @Override

     public String toString()

     {

           return "Food is yummy!";

     }

 

Here is my solution in the Tester class:

 

public class FoodTester

{

     public static void main(String[] args)

     {

           //A

          

           Food food = new Food("Cake", "sweet", 2, "slices");

           System.out.println(food.howMuch());

          

           //B

           System.out.println(food);

           Object obj = new Food("Lasagne", "savoury", 3, "pieces");

           //System.out.println(obj.howMuch());  //error

           Food f = (Food)obj;

           System.out.println(f.howMuch());

          

           //C

           System.out.println(f);

           System.out.println(obj);  //actually calls Food's toString, not Object's toString

     }

}

 

 

D – A USE FOR POLYMORPHISM

 

Here is my final FoodTester class:

 

public class FoodTester

{

     public static void main(String[] args)

     {

           //A

          

           Food food = new Food("Cake", "sweet", 2, "slices");

           System.out.println(food.howMuch());

          

           //B

           System.out.println(food);

           Object obj = new Food("Lasagne", "savoury", 3, "pieces");

           //System.out.println(obj.howMuch());  //error

           Food f = (Food)obj;

           System.out.println(f.howMuch());

          

           //C

           System.out.println(f);

           System.out.println(obj);  //actually calls Food's toString, not Object's toString

          

           //D

           outputStuff(f);

     }

    

     public static void outputStuff(Object o)

     {

        System.out.println(o);

     }

}