An abstract class cannot be intantiated - but can implement methods and properties. An interface is a template - it cannot implement anything.
So interface iAnimal might prescribe 3 methods Move, Eat, Sound - any specific animal class must implement their own versions of Move, Eat , Sound for example for a duck:
void Move(origin, dest) {
case medium="land" {waddle(origin, dest)}
case medium="water" {paddle(origin, dest)}
case medium="air" {flap(origin, destination)}
}
for a cow
void Move(origin,dest) {
walk(origin,dest)
}
IOW interface methods are implemented by the interface implementor.
Abstract classes on the other hand can implement stuff.
Simplest example I can think of is the observer pattern. The abstract "Subject" class implements register(), deregister() and notfy(). Your concrete classes simply inherit these behaviors. However, you cannot instatiate a Subject viz "mysub=new Subject();". By extension, abstracts do not have creators etc,
hth
bruce