If you want to use different functions for each child class you just have to use the "instanceof" operator and type casting like so:
For example somewhere in a loop:
if(items[i] instanceof Game) {
Game g = (Game)items[i];
g.SomeGameSpecificFunc();
} else if(items[i] instanceof Book) {
//...
}
You can also get a string with a name of the class of current object through reflection, but this is rather slow:
String className = items[i].getClass().toString();
//in Java 7+
switch(className) {
case "Book":
//do something
break;
//etc
}
But you should use these techniques only if you really really have to use functions with different names and parameters.