Interface berisi definisi untuk sekelompok fungsionalitas terkait yang dapat diterapkan oleh
class atau
struct.
Dengan menggunakan
interface, kita bisa, mencakup behavior dari berbagai
source di class. Kemampuan itu penting dalam C # karena bahasa tidak mendukung
banyak
inheritance class.
Selain itu, kita harus menggunakan
interface jika kita ingin
mensimulasikan
inheritance untuk
struct, karena mereka sebenarnya tidak
dapat
inheritance dari
struct atau
class lain.
Kita mendefinisikan sebuah
interface dengan menggunakan
keyword interface, seperti ditunjukkan
oleh contoh berikut.
interface IEquatable
{
bool Equals(T obj);
}
Setiap
class atau
struct yang mengimplementasikan
interface IEquatable harus berisi
definisi untuk metode Setara yang sesuai dengan sign yang ditentukan oleh interface.
Akibatnya,
kita dapat mengandalkan class yang menerapkan IEquatable untuk mengandung metod Setara
dengan mana instance dari class dapat menentukan apakah itu sama dengan instance lain
dari class yang sama.
Definisi IEquatable tidak memberikan implementasi untuk Equals. Interface hanya mendefinisikan
sign. Dengan cara itu, sebuah interface di C # mirip dengan class abstrak
dimana semua metod abstrak.
Namun, class atau struct dapat mengimplementasikan
beberapa interface, namun class hanya dapat inheritance satu class,
abstrak atau tidak.
Oleh karena itu, dengan menggunakan interface, kita bisa
memasukkan behavior dari berbagai resource di class.
Interface dapat berisi metod, properti, events, indexers, atau kombinasi dari
keempat type anggota tersebut. Untuk tautan ke contoh, lihat Bagian
Terkait. Interface tidak boleh berisi konstanta, field, operator, konstruktor, finalizer, atau types.
Member interface secara otomatis terbuka, dan mereka tidak dapat menyertakan
modifier akses apapun. member juga tidak bisa statis.
Untuk menerapkan member interface, member class pelaksana yang bersangkutan
harus bersifat publik, non-statis, dan memiliki nama dan sign yang sama dengan
member interface.
Ketika sebuah class atau struct mengimplementasikan sebuah interface,
class atau struct harus menyediakan implementasi untuk semua member yang
didefinisikan oleh interface.
Interface itu sendiri tidak menyediakan
fungsionalitas yang dapat diberikan oleh class atau struct dengan cara
mewarisi fungsionalitas base class. Namun, jika base classs mengimplementasikan interface,
class apa pun yang berasal dari base class mewarisi penerapannya.
Contoh berikut menunjukkan implementasi interface IEquatable .
class pelaksana,
Car, harus memberikan
implementasi metode Equals.
public class Car : IEquatable
{
public string Make {get; set;}
public string Model { get; set; }
public string Year { get; set; }
// Implementation of IEquatable interface
public bool Equals(Car car)
{
if (this.Make == car.Make &&
this.Model == car.Model &&
this.Year == car.Year)
{
return true;
}
else
return false;
}
}
ConversionConversion EmoticonEmoticon