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);
}
}
|
|