Apa perbedaan antara antarmuka dan kelas abstrak di Java?

Kelas abstrak dapat memiliki metode dengan implementasi sedangkan antarmuka memberikan abstraksi mutlak dan tidak dapat memiliki implementasi metode. Perhatikan bahwa dari Java 8 dan seterusnya, adalah mungkin untuk membuat default dan metode statis dalam antarmuka yang berisi implementasi metode.