My first battleship game in Java used polymorphism quite heavily.
All the naval boats had a common super class named "Boat_Hull" which contained the general properties and behaviors such as length, hp, resistance and position.
When the game loaded I simply generated x number of boats for each window and placed them in a "Boat_Hull" array even if the objects had specific types such as "Renegade" or "SubMarine".
Code:
HullBoat $boatArr[x];
for(i++) {
$boatArr[i] = new SpecificBoat();
}
This allowed me to easily keep track of the boats inside an array and if I ever needed to call a specific function I just casted into it's primitive type(Such as a radarscan method for a Scout boat).