abstract class inherit concrete class