What are the Differences between Abstract Class and Interface?