Interface vs Abstract Class
A class must be declared abstract when it has one or more abstract methods. A method is declared abstract when it has a method heading, but no body — which means that an abstract method has no implementation code inside curly braces like normal methods do.