Just that the line
CoinCounter coincounter = new CoinCounter();
in the 'addCoins' method of the Cannon class can be removed.
You are creating a new CoinCounter object that is local to the method, but not doing anything with it; it will be flagged for garbage collection as soon as the method has completed.