Arabirimler (C# Programlama Kılavuzu)Interfaces (C# Programming Guide)

Bir arabirim, soyut olmayan bir sınıfın veya yapının uygulanması gereken ilgili işlevler grubu için tanımlar içerir.An interface contains definitions for a group of related functionalities that a non-abstract class or a struct must implement.

Arabirimleri kullanarak, örneğin, bir sınıftaki birden çok kaynaktan davranış ekleyebilirsiniz.By using interfaces, you can, for example, include behavior from multiple sources in a class. Dil, sınıfların birden çok C# devralınmasını desteklemediğinden bu özellik önemlidir.That capability is important in C# because the language doesn't support multiple inheritance of classes. Bunlara ek olarak, başka bir struct veya sınıftan gerçekten devralmadıklarından yapılar için devralmayı taklit etmek istiyorsanız bir arabirim kullanmanız gerekir.In addition, you must use an interface if you want to simulate inheritance for structs, because they can't actually inherit from another struct or class.

Arabirim anahtar sözcüğünü kullanarak bir arabirim tanımlarsınız.You define an interface by using the interface keyword. Aşağıdaki örnekte gösterildiği gibi.as the following example shows.

interface IEquatable<T>
{
    bool Equals(T obj);
}

Yapının adı geçerli C# bir tanımlayıcı adıolmalıdır.The name of the struct must be a valid C# identifier name. Kural gereği, arabirim adları büyük Ibaşlar.By convention, interface names begin with a capital I.

IEquatable<T> arabirimini uygulayan herhangi bir sınıf veya yapı, arabirimin belirttiği imzayla eşleşen bir Equals yöntemi tanımı içermelidir.Any class or struct that implements the IEquatable<T> interface must contain a definition for an Equals method that matches the signature that the interface specifies. Sonuç olarak, sınıfının bir örneğinin aynı sınıfın başka bir örneğine eşit olup olmadığını belirleyebildiği bir Equals yöntemi içermesi için IEquatable<T> uygulayan bir sınıf üzerinde sayım yapabilirsiniz.As a result, you can count on a class that implements IEquatable<T> to contain an Equals method with which an instance of the class can determine whether it's equal to another instance of the same class.

IEquatable<T> tanımı Equalsiçin bir uygulama sağlamaz.The definition of IEquatable<T> doesn’t provide an implementation for Equals. Bir sınıf veya yapı birden çok arabirim uygulayabilir, ancak bir sınıf yalnızca tek bir sınıftan devralınabilir.A class or struct can implement multiple interfaces, but a class can only inherit from a single class.

Soyut sınıflar hakkında daha fazla bilgi için bkz. soyut ve korumalı sınıflar ve sınıf üyeleri.For more information about abstract classes, see Abstract and Sealed Classes and Class Members.

Arabirimler Yöntemler, özellikler, olaylar, Dizin oluşturucular veya bu dört üye türlerinin herhangi bir birleşimini içerebilir.Interfaces can contain methods, properties, events, indexers, or any combination of those four member types. Örneklere bağlantılar için Ilgili bölümlerbölümüne bakın.For links to examples, see Related Sections. Arabirim, sabitler, alanlar, işleçler, örnek oluşturucular, sonlandırıcılar veya türler içeremez.An interface can't contain constants, fields, operators, instance constructors, finalizers, or types. Arabirim üyeleri otomatik olarak geneldir ve erişim değiştiricileri içeremez.Interface members are automatically public, and they can't include any access modifiers. Üyeler de statikolamaz.Members also can't be static.

Bir arabirim üyesini uygulamak için, uygulama sınıfının karşılık gelen üyesi ortak, statik değil olmalıdır ve arabirim üyesiyle aynı ada ve imzaya sahip olmalıdır.To implement an interface member, the corresponding member of the implementing class must be public, non-static, and have the same name and signature as the interface member.

Bir sınıf veya yapı bir arabirim uygularsa, sınıf veya yapı, arabirimin tanımladığı tüm Üyeler için bir uygulama sağlamalıdır.When a class or struct implements an interface, the class or struct must provide an implementation for all of the members that the interface defines. Arabirimin kendisi bir sınıf veya yapının, temel sınıf işlevini devraldığı şekilde devraldığı bir işlevsellik sağlamaz.The interface itself provides no functionality that a class or struct can inherit in the way that it can inherit base class functionality. Ancak, bir temel sınıf bir arabirim uygularsa, taban sınıftan türetilmiş herhangi bir sınıf bu uygulamayı devralır.However, if a base class implements an interface, any class that's derived from the base class inherits that implementation.

Aşağıdaki örnek, IEquatable<T> arabiriminin bir uygulamasını gösterir.The following example shows an implementation of the IEquatable<T> interface. Uygulama sınıfı Car, Equals yönteminin bir uygulamasını sağlamalıdır.The implementing class, Car, must provide an implementation of the Equals method.

public class Car : IEquatable<Car>
{
    public string Make {get; set;}
    public string Model { get; set; }
    public string Year { get; set; }

    // Implementation of IEquatable<T> interface
    public bool Equals(Car car)
    {
        return this.Make == car.Make &&
               this.Model == car.Model &&
               this.Year == car.Year;
    }
}

Bir sınıfın özellikleri ve Dizin oluşturucular, bir arabirimde tanımlı bir özellik veya Dizin Oluşturucu için ek erişimciler tanımlayabilir.Properties and indexers of a class can define extra accessors for a property or indexer that's defined in an interface. Örneğin, bir arabirim bir Get erişimcisine sahip bir özellik bildirebilir.For example, an interface might declare a property that has a get accessor. Arabirimini uygulayan sınıf, hem get hem de set erişimcisi ile aynı özelliği bildirebilir.The class that implements the interface can declare the same property with both a get and set accessor. Ancak, özellik veya Dizin Oluşturucu açık uygulama kullanıyorsa, erişimcilerinin eşleşmesi gerekir.However, if the property or indexer uses explicit implementation, the accessors must match. Açık uygulama hakkında daha fazla bilgi için bkz. Açık arabirim uygulama ve arabirim özellikleri.For more information about explicit implementation, see Explicit Interface Implementation and Interface Properties.

Arabirimler, diğer arabirimlerden devralınabilir.Interfaces can inherit from other interfaces. Bir sınıf, devraldığı temel sınıflar veya diğer arabirimlerin devraldığı arabirimler aracılığıyla birden çok kez arabirim içerebilir.A class might include an interface multiple times through base classes that it inherits or through interfaces that other interfaces inherit. Ancak, sınıfı bir arabirimin uygulamasını yalnızca bir kez ve yalnızca sınıf sınıfın tanımının bir parçası olarak bildirir (class ClassName : InterfaceName).However, the class can provide an implementation of an interface only one time and only if the class declares the interface as part of the definition of the class (class ClassName : InterfaceName). Arabirimi uygulayan bir temel sınıf devralmış olduğunuz için arabirim devralınmışsa, taban sınıf arabirimin üyelerinin uygulanmasını sağlar.If the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface. Ancak, türetilen sınıf devralınan uygulamayı kullanmak yerine herhangi bir sanal arabirim üyesini yeniden uygulayabilir.However, the derived class can reimplement any virtual interface members instead of using the inherited implementation.

Bir temel sınıf, sanal Üyeler kullanarak arabirim üyeleri de uygulayabilir.A base class can also implement interface members by using virtual members. Bu durumda, türetilmiş bir sınıf sanal üyeleri geçersiz kılarak arabirim davranışını değiştirebilir.In that case, a derived class can change the interface behavior by overriding the virtual members. Sanal üyeler hakkında daha fazla bilgi için bkz. çok biçimlilik.For more information about virtual members, see Polymorphism.

Arabirimler ÖzetiInterfaces summary

Bir arabirim aşağıdaki özelliklere sahiptir:An interface has the following properties:

  • Bir arabirim, yalnızca soyut üyelere sahip bir soyut temel sınıf gibidir.An interface is like an abstract base class with only abstract members. Arabirimi uygulayan herhangi bir sınıf veya yapının tüm üyelerini uygulaması gerekir.Any class or struct that implements the interface must implement all its members.
  • Arabirim doğrudan başlatılamaz.An interface can't be instantiated directly. Üyeleri, arabirimini uygulayan herhangi bir sınıf veya yapı tarafından uygulanır.Its members are implemented by any class or struct that implements the interface.
  • Arabirimler olay, Dizin oluşturucular, Yöntemler ve özellikler içerebilir.Interfaces can contain events, indexers, methods, and properties.
  • Arabirimler yöntemlerin uygulanmasını içermez.Interfaces contain no implementation of methods.
  • Bir sınıf veya yapı, birden çok arabirim uygulayabilir.A class or struct can implement multiple interfaces. Bir sınıf bir temel sınıfı devralınabilir ve ayrıca bir veya daha fazla arabirim uygulayabilir.A class can inherit a base class and also implement one or more interfaces.

Bu bölümdeIn this section

Belirtik Arabirim KullanmaExplicit Interface Implementation
Bir arabirime özgü bir sınıf üyesinin nasıl oluşturulacağını açıklar.Explains how to create a class member that’s specific to an interface.

Nasıl yapılır: Arabirim Üyelerini Açıkça UygulamaHow to: Explicitly Implement Interface Members
Arabirimlerin üyelerini açıkça nasıl uygulayacağınızı gösteren bir örnek sağlar.Provides an example of how to explicitly implement members of interfaces.

Nasıl yapılır: İki Arabirimin Üyelerini Açıkça UygulamaHow to: Explicitly Implement Members of Two Interfaces
Devralma ile arabirimlerin üyelerini açıkça nasıl uygulayabileceğinizi gösteren bir örnek sağlar.Provides an example of how to explicitly implement members of interfaces with inheritance.

İlgili bölümlerRelated Sections

Öğrenme C# 3,0 ' deki arabirimler: C# 3,0 temelleri ana Interfaces in Learning C# 3.0: Master the Fundamentals of C# 3.0

Ayrıca bkz.See also