if you implement Interface it will force you to implement the method of the interface also. ok. So when ever you want this kind of situation you can use Interface. Like in Runnable interface
java developers want you to implement run method, thats why they made it an Interface.
And Abstract classes are for future utilization. If you are sure that you are or some one else going to improve your class in the future then keep it Abstract.Example Abstract Class AbstractList.