An abstract class
may contain instance variables
may contain constructors
may extend another class
a and b
all of the above