I have researched the topic further and i realise that for an example to purely detail parametric polymorphism, it must not utilise "implements" (which would detail subtype polymorphism) but instead should utilise generics .
This is my previous question: What is parametric polymorphism in Java (with example)?
This is the reworked code to use generics with a single issue.
class Pet<T>
{
private T pet;
public Pet(T pet)
{
this.pet = pet;
}
public String talks()
{
// what do i write here?
// pet.talks(); is undefined for type T
}
}
class Cat
{
public String talks()
{
return "Meow";
}
}
class Dog
{
public String talks()
{
return "Woof";
}
}
public class TestPet
{
public static void main(String[] args)
{
Pet<Cat> cat = new Pet<Cat>(new Cat());
System.out.println("Cat says " + cat.talks());
Pet<Dog> dog = new Pet<Dog>(new Dog());
System.out.println("Dog says " + dog.talks());
}
}
There is a single issue with my code detailed in comments. I'm unsure how to write it without using the implements command. Do you know what to write?