Secara teknis, perbedaannya tidak terlalu signifikan tetapi, secara konseptual, mereka adalah hal yang sepenuhnya berbeda dan yang mengarah ke perbedaan teknis yang disebutkan orang lain.
Superclass abstrak persis seperti apa kedengarannya, itu adalah tipe umum yang dimiliki oleh banyak jenis lainnya, seperti Kucing dan Anjing adalah Hewan.
Antarmuka juga persis seperti apa itu, itu adalah antarmuka di mana kelas lain dapat berkomunikasi dengan objek. Jika Anda ingin membuat Cat Walk, Anda boleh, karena Cat mengimplementasikan antarmuka CanWalk. Sama untuk Kadal, meskipun mereka berjalan sangat berbeda. Ular, di sisi lain, tidak menerapkan CanWalk, jadi Anda tidak bisa mengatakannya kepada Walk. Sementara itu, Lizard dan Snake (atau mungkin subclass yang lebih eksplisit - saya bukan ahli) mungkin akan melepaskan kulit mereka, dan dengan demikian mengimplementasikan CanShed, sementara Kucing tidak bisa melakukan itu.
Tetapi mereka semua tetap Hewan dan memiliki beberapa sifat umum, seperti apakah mereka hidup atau mati.
Inilah sebabnya mengapa semua metode pada antarmuka harus diimplementasikan sebagai publik (atau secara eksplisit, dalam C #). Karena apa gunanya antarmuka yang tersembunyi dari antarmuka kelas dengan objek? Itu juga mengapa Anda dapat memiliki banyak antarmuka ke objek, bahkan ketika suatu bahasa tidak mendukung banyak pewarisan.
Untuk kembali ke pertanyaan Anda, ketika Anda melihatnya seperti ini, jarang ada alasan untuk memiliki superclass yang sepenuhnya abstrak.