Interface pada Bahasa Pemrograman C#

Interface pada Bahasa Pemrograman C#
Photo by Med Badr Chemmaoui / Unsplash

Dalam pemrograman C#, interface adalah blueprint atau kontrak yang mendefinisikan kumpulan method tanpa implementasi. Interface digunakan untuk memastikan bahwa class yang mengimplementasinya memiliki method tertentu, tanpa perlu pewarisan langsung seperti pada abstract class.

Artikel ini akan membahas apa itu interface dalam C#, bagaimana cara menggunakannya, serta contoh implementasinya dalam berbagai skenario pemrograman.

1. Apa Itu Interface dalam C#?

Interface adalah tipe referensi yang hanya berisi deklarasi method, properti, indexer, atau event tanpa implementasi. Class atau struct yang mengimplementasi interface harus menggunakan semua method yang dideklarasikan dalam interface.

Ciri-Ciri Interface

Hanya berisi deklarasi method, properti, atau event (tanpa implementasi).
Tidak memiliki constructor.
Dapat diimplementasikan oleh multiple class (mendukung multiple inheritance).
Tidak bisa memiliki field (variabel anggota).

Sintaks Interface

interface IKendaraan {
    void Bergerak();
}

Class yang mengimplementasikan interface harus mendefinisikan method yang ada dalam interface.

2. Contoh Penggunaan Interface dalam C#

2.1 Contoh Dasar Interface

using System;

interface IKendaraan {
    void Bergerak();
}

class Mobil : IKendaraan {
    public void Bergerak() {
        Console.WriteLine("Mobil bergerak di jalan.");
    }
}

class Program {
    static void Main() {
        Mobil mobil1 = new Mobil();
        mobil1.Bergerak();
    }
}

Output:

Mobil bergerak di jalan.

Penjelasan:

  • Interface IKendaraan mendefinisikan method Bergerak(), tanpa implementasi.
  • Class Mobil mengimplementasikan IKendaraan dan harus memberikan implementasi untuk method Bergerak().

3. Interface dengan Properti dan Event

Interface juga bisa berisi properti dan event, tetapi tidak bisa memiliki field.

interface IPerson {
    string Nama { get; set; }
    void Sapa();
}

class Mahasiswa : IPerson {
    public string Nama { get; set; }
    
    public void Sapa() {
        Console.WriteLine("Halo, nama saya " + Nama);
    }
}
  • Interface IPerson memiliki properti Nama dan method Sapa().
  • Class Mahasiswa mengimplementasikan interface dan harus mendefinisikan properti serta method-nya.

4. Menggunakan Multiple Interface dalam C#

Keunggulan utama interface dibandingkan inheritance class adalah kemampuannya untuk mendukung multiple inheritance.

interface IKendaraan {
    void Bergerak();
}

interface IMesin {
    void HidupkanMesin();
}

class Mobil : IKendaraan, IMesin {
    public void Bergerak() {
        Console.WriteLine("Mobil melaju di jalan.");
    }
    
    public void HidupkanMesin() {
        Console.WriteLine("Mesin mobil dinyalakan.");
    }
}
  • Class Mobil mengimplementasikan dua interface (IKendaraan dan IMesin).
  • Setiap method dari kedua interface harus diimplementasikan dalam class tersebut.

5. Interface vs Abstract Class

Banyak yang bingung kapan harus menggunakan interface dan kapan harus menggunakan abstract class. Ini dia perbedaannya!

Perbedaan Interface Abstract Class
Pewarisan Bisa diimplementasikan oleh multiple class Hanya bisa diwarisi oleh satu class
Implementasi Tidak memiliki implementasi Bisa memiliki implementasi method
Field Tidak bisa memiliki field Bisa memiliki field
Constructor Tidak bisa memiliki constructor Bisa memiliki constructor
Kapan digunakan? Jika hanya ingin mendeklarasikan kontrak tanpa implementasi Jika ingin memberikan method dasar dengan kemungkinan override

Kesimpulan:

  • Gunakan interface jika ingin mendefinisikan kontrak untuk class yang berbeda.
  • Gunakan abstract class jika ada implementasi method dasar yang akan digunakan oleh subclass.

6. Kapan Harus Menggunakan Interface?

Gunakan interface jika:

  • Ingin memisahkan kontrak (deklarasi method) dari implementasi.
  • Butuh multiple inheritance untuk berbagai class.
  • Ingin memastikan bahwa class memiliki method tertentu, tanpa harus mewarisi class tertentu.

Jangan gunakan interface jika:

  • Butuh memiliki implementasi bawaan untuk beberapa method (gunakan abstract class).
  • Perlu menyimpan field atau data dalam class.

7. Kesimpulan

  • Interface adalah kontrak yang mendefinisikan method tanpa implementasi.
  • Dapat digunakan untuk membuat multiple inheritance dalam C#.
  • Interface tidak bisa memiliki field atau constructor, hanya method, properti, dan event.
  • Membantu dalam pembuatan kode yang lebih fleksibel dan modular.

Dengan memahami Interface dalam C#, kamu bisa membuat desain kode yang lebih fleksibel, reusable, dan scalable!

Read more