An abstract class is not a concrete implementation...it either provides some(zero or one) implementation for methods it inherits from another class or implements an interface....
An abstract class cannot be used directly....the first concrete implementation in the inheritance hierarchy will provide all or some features/behavior that would be that of an abstract class...here the abstraction is the behavior which belongs to an abstract class which is inherited by the concrete class....
for eg.
class Parent{
public void method1(){}
}
abstract class Child extends Parent{
public void method2(){}
}
public class Concrete extends Child{
public static void main(
String args[]){
new Concrete().method2();//the method2 is behavior inherited and //abstracted out in the code of class Child.
}
}