I like the use of the GameObject class, but it may be a good idea to have the GameObject class be an Interface that the actual game components implement. By this I mean that it might be a good idea to create a class for the SnakeBodyUnit that implements the GameObject interface, and a Fruit class that also implements the GameObject interface.