Allora due cose:
Se implementi una interfaccia (e lo stai facendo) devi implementarne i metodi.. non solo scrivere "implements qualcosa"
Per quanto riguarda l'outOfBound, dipende dal fatto che il primo carattere di una stringa ha posizione "0" e l'ultimo length - 1. Tu arrivi a length nel ciclo for (in altre parole, fai il confronto solo con minore e non minore-uguale come stai facendo adesso)