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; } }