Difference Between Abstract Class and Interface in Java