Di C #, kelas yang mengimplementasikan antarmuka diperlukan untuk mendefinisikan semua anggota antarmuka itu. Dalam kasus kelas abstrak, Anda cukup mendefinisikan anggota tersebut dengan abstract
kata kunci:
interface IFoo
{
void Bar();
}
abstract class Foo : IFoo
{
public abstract void Bar();
}
Atau dengan kata lain: Anda tidak harus "menerapkan" itu (yang akan menjadi batasan yang mengerikan pada kelas abstrak); namun, dalam C #, Anda harus memberi tahu kompiler bahwa Anda dengan sengaja menyerahkan uang kepada subkelas beton - dan baris kode di atas menunjukkan cara melakukannya.
Komentar dan downvotes mengeluh bahwa ini bukan jawaban atas pertanyaan yang tidak tepat. Seseorang yang datang ke Stack Overflow, setelah menerima kesalahan kompilator ini, tetapi memiliki kelas abstrak di mana itu akan menjadi kesalahan untuk memasok implementasi, terjebak tanpa solusi yang baik - harus menulis metode implementasi yang melempar pengecualian runtime, sebuah karya yang menghebohkan. -around - sampai mereka memiliki informasi di atas. Baik atau buruknya C # membutuhkan saksi ini di luar lingkup Stack Overflow, dan tidak relevan dengan pertanyaan atau jawaban ini.