Per quanto ne so, dichiarare un'interfaccia è così:
public interface Roots_Squares {
public double square_root( double value );
}
Ora ... come imponi il valore per avere valori non negativi? Tale funzione dovrebbe evitare i valori negativi giusto? Se qualcuno crea una classe che implementa questo, e quell'implementazione non gestisce valori negativi, e poi io uso la loro classe con un valore negativo ... beh, le cose si rompono.
È quindi mia responsabilità controllare i negativi quando sono abbastanza sicuro che l'implementatore dovrebbe eseguire il controllo.