Ho trovato due soluzioni funzionanti:

1)
Codice PHP:
class cSequence implements CharSequence {
        
        public 
String frase;
        
        public static 
void main(String[] args) {
            
cSequence miaFrase = new cSequence("ciao, questa è una prova");
            
System.out.println("Il terzo carattere della frase è " miaFrase.charAt(3) + ".");
            
System.out.println("La lunghezza della frase è " miaFrase.length() + ".");
            
System.out.println("Un pezzo della frase è " miaFrase.subSequence(719) + ".");
            
System.out.println("La frase è: " miaFrase.toString() + ".");
        }
        
        public 
cSequence(String f) {
            
frase f;
        }
        
        public 
char charAt(int pos) {
            return 
frase.charAt(pos);
        }
        
        public 
int length() {
            return 
frase.length();
        }
        
        public 
CharSequence subSequence(int sPosint ePos) {
            return 
frase.subSequence(sPosePos);
        }
        
        public 
String toString() {
            return 
frase.toString();
        }
        
    } 
2)
Codice PHP:
public class cSequenceExample {

    public static 
void main(String[] args) {
        
cSequence miaFrase = new cSequence("ciao, questa è una prova");
        
System.out.println("Il terzo carattere della frase è " miaFrase.charAt(3) + ".");
        
System.out.println("La lunghezza della frase è " miaFrase.length() + ".");
        
System.out.println("Un pezzo della frase è " miaFrase.subSequence(719) + ".");
        
System.out.println("La frase è: " miaFrase.toString() + ".");
    }

}

class 
cSequence implements CharSequence {
        
        public 
String frase;
        
        public 
cSequence(String f) {
            
frase f;
        }
        
        public 
char charAt(int pos) {
            return 
frase.charAt(pos);
        }
        
        public 
int length() {
            return 
frase.length();
        }
        
        public 
CharSequence subSequence(int sPosint ePos) {
            return 
frase.subSequence(sPosePos);
        }
        
        public 
String toString() {
            return 
frase.toString();
        }
        
    } 
Se tu dovessi scrivere questo programma quale useresti? Quello che mi interessa sapere è qual'è la logica "standard" della programmazione ad oggetti in questi casi.

Per quanto riguarda la seconda soluzione, inizialmente avevo usato:

public class cSequence implements CharSequence {

ma poi ho tolto il public perché non compilava, sai spiegarmi il perché?

Grazie ancora.