Kode for Person-grensesnitt med metoder for å lese og sette fornavn (givenName), etternavn (familyName) og fullt navn (fullName - leser/setter implisitt de to andre):

package interfaces;

public interface Person {
    
	public String getGivenName();
	public void setGivenName(String givenName);

	public String getFamilyName();
	public void setFamilyName(String familyName);

	public String getFullName();
	public void setFullName(String fullName);
}

Kode for Person1-implementasjon, som bruker to felt for henholdvis fornavn (givenName) og etternavn (familyName), som også brukes av getFullName og setFullName:

package interfaces;

public class Person1 implements Person {

    private String givenName;
    private String familyName;

    public Person1(String givenName, String familyName) {
        this.givenName = givenName;
        this.familyName = familyName;
    }
    @Override
    public String toString() {
        return getFullName();
    }
    
    public String getGivenName() {
        return this.givenName;
    }
    public void setGivenName(String givenName) {
        String errorMessage = checkValidName(givenName);
        if (errorMessage != null) {
            throw new IllegalArgumentException(errorMessage);
        }
        this.givenName = givenName;
    }
    public String checkValidName(String givenName) {
        for (int i = 0; i < givenName.length(); i++) {
            char c = givenName.charAt(i);
            if (! Character.isLetter(c)) {
                return "Tegnet " + c + " på posisjon " + i + " i " + givenName + " er ikke lov i et navn! Kun bokstaver er lov, nemlig!";
            }
        }
        return null;
    }
    
    public String getFamilyName() {
        return this.familyName;
    }
    public void setFamilyName(String familyName) {
        checkValidName(familyName);
        this.familyName = familyName;
    }
    
    public String getFullName() {
        return this.givenName + " " + this.familyName;
    }
    public void setFullName(String fullName) {
        int pos = fullName.indexOf(' ');
        this.givenName = fullName.substring(0, pos);
        this.familyName = fullName.substring(pos + 1);
    }
}

Kode for Person2-implementasjon, som bruker ett felt for fullt navn (fullName) , som brukes av alle get- og set-metodene:

package interfaces;

public class Person2 implements Person {

    private String fullName;

    public Person2(String fullName) {
        this.fullName = fullName;
    }
    @Override
    public String toString() {
        return getFullName();
    }

	public String getFullName() {
        return this.fullName;
    }
    public void setFullName(String fullName) {
        this.fullName = fullName;
    }
    
    public String getGivenName() {
        return this.fullName.substring(0, this.fullName.indexOf(' '));
    }
    public void setGivenName(String givenName) {
        this.fullName = givenName + " " + getFamilyName();
    }
    
    public String getFamilyName() {
        return this.fullName.substring(this.fullName.indexOf(' ') + 1);
    }
    public void setFamilyName(String familyName) {
        this.fullName = getGivenName() + " " + familyName;
    }
}