Java ve C # Arayüz ve Soyut Sınıf Arasındaki Fark

Yazar: Laura McKinney
Yaratılış Tarihi: 1 Nisan 2021
Güncelleme Tarihi: 9 Mayıs Ayı 2024
Anonim
Java ve C # Arayüz ve Soyut Sınıf Arasındaki Fark - Teknoloji
Java ve C # Arayüz ve Soyut Sınıf Arasındaki Fark - Teknoloji

İçerik


Arayüz ve Özet sınıfının her ikisi de OOP'ta “eksik tip” e katkıda bulunur. Bazen “ne yapacağını” tanımlamak için bir üst sınıfa ihtiyaç duyarız, ancak “nasıl yapılır” değil, bir kısmın nasıl yapılacağı, türetilmiş sınıf tarafından ihtiyacına göre uygulanacaktır.arayüzey”Buna bir çözüm getirin. Bazen türetilmiş sınıflar tarafından uygulanabilecek genelleştirilmiş bir yapıyı ve türetilmiş sınıflar tarafından kullanılabilecek belirli bir yapıyı tanımlayan bir üst sınıf sınıfına ihtiyacımız var, “soyut sınıf”Buna bir çözüm sunuyor. Arayüz ve soyut sınıf arasındaki temel fark, arayüzün tamamen eksik olması ve soyut sınıfın kısmen eksik olmasıdır.

  1. Karşılaştırma Tablosu
  2. Tanım
  3. Anahtar Farklılıklar
  4. Sonuç

Karşılaştırma Tablosu

Karşılaştırma için temelarayüzeySoyut sınıf
TemelGereksinimleri yalnızca uygulamasıyla ilgili olarak bilmediğinizde, "Arayüz" ü kullanırsınız.Uygulamalar hakkında kısmen bilgi sahibi olduğunuzda, “Soyut sınıflar” kullanırsınız.
YöntemlerArayüz sadece soyut yöntemler içerir.Soyut sınıf, somut yöntemlerin yanı sıra soyut yöntemleri de içerir.
Yöntemlerin Erişim DeğiştiricisiArabirim yöntemleri, bildirmesek bile, her zaman "Genel" ve "Özet" tir. Bu nedenle,% 100 saf soyut sınıf olarak söylenebilir.Soyut sınıftaki yöntemin kamusal ve soyut olması zorunlu değildir. Ayrıca somut yöntemlere de sahip olabilir.
Yöntemler için Sınırlı DeğiştiriciBir arayüz yöntemi aşağıdaki değiştiricilerle bildirilemez:
Kamu: Özel ve Korumalı
Özet: final, statik, senkronize, yerli, strictfp.
Soyut sınıf değişkeninin değiştiricileri üzerinde herhangi bir kısıtlama yoktur.
Değişkenlere Erişim DeğiştiriciArayüz değişkenleri için izin verilen Acess Modifier, bildirir ya da bildirmesek de genel, statik ve nihaidir.Soyut sınıftaki değişkenlerin genel, statik ve final olması gerekmez.
Değişkenler için kısıtlı değiştiricilerArabirim değişkenleri özel, korumalı, geçici, geçici olarak bildirilemez.Soyut sınıf değişkenlerinin değiştiricileri üzerinde herhangi bir kısıtlama yoktur.
Değişkenlerin başlatılmasıArabirim değişkenleri, bildirimi sırasında başlatılmalıdır.Özet sınıfı değişkenlerinin beyanı sırasında başlatılması zorunlu değildir.
Örnek ve statik bloklarArabirimin içinde, bir örnek veya statik blok bildiremezsiniz.Soyut sınıf, içindeki bir örneğe veya statik bloğa izin verir.
KurucularArayüzün içindeki yapıcıyı bildiremezsiniz.Yapıcıyı soyut bir sınıf içinde ilan edebilirsiniz.


Arabirimin Tanımı

Java, birden fazla mirasa izin vermiyor. Yani, tek bir sınıf bir seferde birden fazla sınıf devralamaz. Bunun arkasındaki neden bir örnekle açıklanabilir. Diyelim ki A ve B iki ana sınıfımız ve C türetilmiş bir sınıfımız var. Türetilmiş C sınıfı, hem A hem de B sınıflarını miras alıyor.Şimdi, hem A hem de B sınıfı yöntem set () 'e sahip, o zaman C sınıfı için bir soru olacaktır, bu da hangi sınıfın set () yönteminin kalıtsal olması gerektiğidir. Bu sorunun çözümü “arayüz” dür.

Arayüz saf soyut bir sınıftır. Bir arayüz oluşturmak için kullanılan anahtar kelime “arayüz” dür. Arayüz içindeki tüm yöntemler tamamen soyut olduğundan. Arayüz sadece bir sınıfın ne yapması gerektiğini belirtir, fakat nasıl yapılacağını tanımlamaz. Arabirim içinde bildirilen tüm yöntemlerin soyut olduğu için, arabirim için örnek oluşturulamaz. Java’daki genel “arabirim” şekli:


access_specifier arayüzey interface_name {return-type yöntemi-adı1 (parametre listesi); return-type yöntemi-name2 (parametre listesi); final-varname1 yazın = değer; final-varname2 yazın = değer; // ... return-type yöntemi-adıN (parametre listesi); final-varnameN = değer; }

Erişim belirteci, sınıfların arabirimi uygulaması gerektiğinden genel olarak ilan edildi.

C ++ 'ta “Arayüz” kavramına sahip değiliz. Ancak, Java ve C # arayüzü çok iyi tanımlar.

Java'da Arayüz:

  • Bir arabirimin değişkenleri varsayılan olarak her zaman genel, statik ve sondur.
  • Değişkenler beyan edildiği tarihte başlatılmalıdır.
  • Değişkenler asla özel, korumalı, geçici ve geçici olarak ilan edilemez.
  • Bir ara yüzün yöntemleri her zaman halka açık ve soyuttur, oysa ki asla özel, korumalı, nihai, statik, senkronize, yerel ve kesin olarak bildirilemezler.
  • Yapıcının temel amacı, sınıf değişkenlerinin başlatılmasıdır, ancak arabirim değişkenlerinde bildirimi sırasında başlatıldığından arabirim içindeki hiçbir kurucuyu ilan edemezsiniz.
  • Arabirim, diğer arabirimleri devralabilir, ancak böyle bir arabirimi uygulayan sınıfın, miras alınan tüm arabirimlerin yöntemlerini uygulaması gerekir.
  • Bir sınıf aynı anda birden fazla arayüz devralabilir ve miras alınan tüm arayüzlerin tüm yöntemlerini uygulamalıdır.

Java'da arayüz uygulamanın genel şekli:

sınıf class_name Interface_name uygular {// class-body}

Bir arayüzü miras almak için, bir sınıf “uygular” anahtar sözcüğünü kullanır ve sınıf, miras alınan bir arayüz tarafından bildirilen tüm yöntemleri uygular.

C # içindeki arayüz:

C # 'daki arayüz, Java dışındaki arayüze neredeyse benzer:

  • C # 'daki arayüz değişkenleri bildirmez.
  • Arayüzün adı büyük harf I ile belirtilir ve iki nokta üst üste (:) işaretiyle miras alınır.

C # 'da bir arayüz uygulamanın genel şekli:

sınıf class_name: interface_name {// class-body}

Soyut sınıfın tanımı

Bir veya daha fazla soyut yöntem içeren bir sınıfa soyut sınıf denir ve sınıf bildiriminin başındaki “class” anahtar sözcüğünden önce gelen “abstract” anahtar kelimesini kullanarak bir sınıf soyut olarak ilan edilir. Soyut sınıf soyut yöntemi içerdiğinden eksik bir tip oluşturur. Dolayısıyla, soyut bir sınıfın nesnelerini oluşturamazsınız. Bir sınıf, soyut bir sınıfa miras aldığında, soyut sınıfın tüm soyut yöntemlerini uygulamalıdır, eğer yapmazsa, o zaman da soyut olarak ilan edilmelidir.

Soyut sınıf, türetilmiş sınıfın olduğu gibi kullanılabilecek somut yöntemler de içerebilir. Ancak, soyut bir sınıf içinde soyut bir kurucu veya soyut bir statik yöntem bildiremezsiniz. Java'da soyut sınıfın genel formu şöyledir:

soyut sınıf class_name {abstract yöntem_adı1 (); soyut yöntem_adı2 (); : return_type yöntemi_adı3 (parametre_ listesi) {// concrete method} return_type yöntemi_adı4 (parametresi_list) {// concrete method}};

Soyut bir sınıf kavramı hem Java hem de C # ile benzerdir. Soyut bir sınıf C ++ 'ta biraz farklıdır.

C ++ 'da bir sınıf en az bir sanal işleve sahipse, sınıf soyut bir sınıf haline gelir. “Abstract” anahtar kelimesi yerine “virtual” anahtar kelimesi soyut bir metot bildirmek için kullanılır.

  1. “Neyin gerekli” bilgisine sahip olduğunuzda ancak “nasıl uygulanacağını” bilmediğiniz zaman arayüz kullanılmalıdır. Öte yandan, neyin gerekli olduğunu ve nasıl uygulanacağını kısmen biliyorsanız, soyut bir sınıf kullanın.
  2. Bir ara yüzün bütün yöntemleri soyut ama soyut bir sınıfın bazı soyut yöntemleri ve bazı somut yöntemleri var.
  3. Bir arayüzün içindeki yöntemler kamusal ve soyuttır, dolayısıyla saf soyut sınıf olarak da adlandırılır. Öte yandan, bir özetin içindeki yöntemlerin yalnızca halka açık ve soyut olması sınırlı değildir.
  4. Bir arayüz yöntemi asla özel, korumalı, nihai, statik, senkronize, yerel veya katı olamaz. Öte yandan, soyut bir sınıfın yöntemleriyle ilgili herhangi bir kısıtlama yoktur.
  5. Bir arayüzdeki değişkenler herkese açık ve nihaidir, bunları açıklamak veya bildirmemekle birlikte, soyut bir sınıfın değişkenleri için sadece genel ve nihai olmak üzere böyle bir kısıtlama yoktur.
  6. Bir arabirimdeki değişkenler hiçbir zaman özel olarak korunan geçici veya geçici olamaz, oysa soyut bir sınıftaki değişkenlerle ilgili hiçbir kısıtlama yoktur.
  7. Arabirimin değişkeni bildirim sırasında başlatılmalıdır. Öte yandan, soyut bir sınıftaki değişkenler herhangi bir zamanda başlatılabilir.
  8. Bir arabirim içinde, bir örnek veya statik blok bildirilemez, ancak soyut bir sınıf içinde örnek veya statik blok bildirebilirsiniz.
  9. Yapıcıyı bir arabirim içinde tanımlayamazsınız, oysa soyut bir sınıf içinde yapıcıyı tanımlayabilirsiniz.

Sonuç:

İhtiyaçlarına göre türetilmiş sınıflar tarafından uygulanabilecek genelleştirilmiş bir yöntem formu içeren bir temel sınıf yaratmanız gerektiğinde, ara yüz ve soyut sınıf kavramı bunu yapmanıza yardımcı olur.