abstract class vs interface c example