How to make a call to interface method from the class which implements this interface public interface IA { void m1(); } public abstract class A implements IA { void m2() {/*how to make a call to m1 here*/ } } public class AClass extends A { void m1(); } For example what is wrong in execute method so that I can't call methods identified in interface. public class TriggerManager { public interface ITriggerHandler {//TriggerManager.ITriggerHandler void onBeforeInsert(List<sObject> newRecords); void onBeforeUpdate(List<SObject> oldRecords, List<SObject> newRecords, Map<ID, SObject> oldRecordsMap, Map<ID, SObject> newRecordsMap); void onBeforeDelete(List<sObject> oldRecords, Map<ID, sObject> oldRecordsMap); void onAfterInsert(List<sObject> newRecords, Map<ID, sObject> newRecordsMap); void onAfterUpdate(List<sObject> oldRecords, List<sObject> newRecords, Map<ID, sObject> oldRecordsMap, Map<ID, sObject> newRecordsMap); void onAfterDelete(List<sObject> oldRecords, Map<ID, sObject> oldRecordsMap); } public abstract class TriggerHandler implements ITriggerHandler { private void execute(Boolean isBefore, Boolean isAfter, Boolean isInsert, Boolean isUpdate, Boolean isDelete, List<SObject> oldRecords, List<SObject> newRecords, Map<ID, SObject> oldRecordsMap, Map<ID, SObject> newRecordsMap) { /* if(isBefore) { if (isInsert) onBeforeInsert(newRecords); else if (isUpdate) onBeforeUpdate(oldRecords, newRecords, oldRecordsMap, newRecordsMap); else if (isDelete) onBeforeDelete(oldRecords, oldRecordsMap); } else { if (isInsert) onAfterInsert(newRecords, newRecordsMap); else if (isUpdate) onAfterUpdate(oldRecords, newRecords, oldRecordsMap, newRecordsMap); else if (isDelete) onAfterDelete(oldRecords, oldRecordsMap); } */ } } public static void handle(TriggerHandler handler) { handler.execute( Trigger.isBefore, Trigger.isAfter, Trigger.isInsert, Trigger.isUpdate, Trigger.isDelete, Trigger.old, Trigger.new, Trigger.oldMap, Trigger.newMap); } } What other items did I miss in this architecture?