difference between concrete class and abstract class