Practical usages of abstract classes

You are unsure of how a method should be defined/implemented 
for that class

You don't want the possibility of objects of that type being created 
(e.g. bank doesn't want customers creating a general bank account)

-------

Interface:

	All methods are abstract
	Can contain variables, but must be static and final 

	Cannot be instantiated or contain any constructor

===============
Abstract Class vs. Interface

Abstract Classes can have constructors, instance variables, &
concrete methods (i.e. non-abstract); interfaces can't! 

Abstract Classes are extended by a subclass which may implement the
abstract methods, but doesn't have to.

Interfaces are implemented by another class which must implement 
ALL its abstract methods.

