abstract class and abstract keyword