public class Nine { public static void main(String[] argv) { Nine a = new Nine(); a.m(); } public void m() { System.out.println("Method m() running"); } } abstract aspect Y { abstract pointcut p(); before(): execution(* m(..)) && p() { System.out.println("In advice()"); } boolean doit() { System.out.println("in doit(): class="+this.getClass().getName()); return true; } } aspect X extends Y { pointcut p(): if(thisAspectInstance.doit()); }