# İnterface(Arayüz) Nedir?

Interface adından da anlaşılacağı üzere diğer sınıflara yön vermek, rehberlik yapmak anlamını taşır. Interface tanımlamaları içerisinde kesinlikle kod bloğu bulunmaz. Sadece tanımlama yapılır.

&#x20;Bir Class sadece bir class’tan türetebilirken, bir Class birden çok Interface ten türetilebilir.

&#x20;Kod içerisinde “new” anahtar sözcüğü ile oluşturulamazlar.

Bir sınıf birden fazla interface implemente edebilir.

Implemente edicek sınıflar arasında genelde “can-do” ilişkisi vardır.

Interface içerisine sadece boş method’lar tanımlanabilir.(property de tanımlanabilir ama yazılım dünyası bunu hoş karşılamamaktadır.)

Interface adı I ile başladığına dikkat edelim. Burada I harfi bunun Interface olarak tanımlandığı hakkında bilgi verir.(zorunluluk değildir ama evrensel olarak kabul edilmiştir.)

Bir Interface’in tüm üyeleri Public kabul edilir.Abstract Class’ta olduğu gibi bunda da Private, Protected, Static gibi tanımlamalar yapılamaz.

Genelde büyük ölçekli projelerde önem kazanmaktadırlar.

Interfacelerde Abstract sınıflarda oldugu gibi method gövdeleri boş bırakılır buradaki amaç methodların implement edildikleri sınıflarda yetenek kazandırılmasıdır.

![](https://4099491849-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MOod-uO8dOWHC7KSrHS%2F-MOoikp24TM2G2AGZks0%2F-MOok6n1W4A1wWK3GQyC%2Fpasted%20image%200.jpg?alt=media\&token=a45b8ae5-4b0b-43a6-9e55-468dd1fbadb4)

Bir console uygulaması açtım ve içerisine 3 interface bir class ekledim. Resimde de görüldüğü gibi MyClass isimli class’a istediğimiz kadar interface rehberlik edebiliyor. Şimdi interfacelerin içlerinde bazı metod tanımlamaları yapmış olalım, gördüğünüz gibi interfacelerin içerisinde sadece tanımlamalar yapılır asla tanımlamaların içerisine kod yazılmaz.

Tanımlama yaptığımız için interfacelerin rehberlik ettiği MyClass isimli sınıf hata veriyor bunun sebebi bu tanımlamaların bu sınıfa implemente edilmemesidir. Aşağıdaki resimde hatayı kutucuğun içerisinde göreceksiniz. Visual Studio bize eksik üyeleri implemente etmemizi söylüyor ve hata veriyor.&#x20;

![](https://4099491849-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MOod-uO8dOWHC7KSrHS%2F-MOoikp24TM2G2AGZks0%2F-MOokImInwo0WRPrXwcU%2Fzazaza.jpg?alt=media\&token=6f350778-e0a5-484d-840a-4beaf4e0d8ea)

Şimdi “implement missing member” yazan kutucuğa basıp implementasyonlarımızı yaptıktan sonra MyClass isimli sınıfımıza otomatik yapılan implementasyonları göreceğiz.

![](https://4099491849-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MOod-uO8dOWHC7KSrHS%2F-MOoikp24TM2G2AGZks0%2F-MOokX8B4TIejPLzqP-R%2Fkokokok.jpg?alt=media\&token=7e19504e-d9ca-466e-9aff-d3fcc406e0f3)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://samettteraslan.gitbook.io/oop/interface-arayuez-nedir.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
