diff -r 4bf599099de7 -r 40cabcdcd2be samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java --- a/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java Sat Jun 14 09:54:19 2008 +0200 +++ b/samples/sidemeanings/src/org/apidesign/sidemeanings/Public.java Thu Oct 30 21:30:10 2014 +0100 @@ -1,27 +1,41 @@ package org.apidesign.sidemeanings; -public final class Public { - private Public() {} +public abstract class Public { + int counter; + + Public() {} + + public abstract void increment(); + + public final void incrementTenTimes() { + for (int i = 0; i < 10; i++) { + increment(); + } + } + + public final void assertCounter(int expected) { + assert expected == counter : "Expected " + expected + " but was " + counter; + } - public abstract class Dirty { + public static abstract class Dirty extends Public { // BEGIN: sidemeanings.Public.Dirty - public void method() { - someCode(); + public void increment() { + // internal implementation + counter++; } // END: sidemeanings.Public.Dirty - private void someCode() { - } } - public abstract class Clean { + public static abstract class Clean extends Public { // BEGIN: sidemeanings.Public.Clean - public final void method() { - methodImpl(); + public final void increment() { + overridableIncrement(); } - protected abstract void methodImpl(); - protected final void someCode() { + protected abstract void overridableIncrement(); + protected final void defaultIncrement() { + counter++; } // END: sidemeanings.Public.Clean }