Java'da Arayüz ve Soyut Sınıf Arasındaki Fark

Anahtar Farkı: Arayüz veya protokol, ilgisiz nesnelerin birbirleriyle iletişim kurmasını sağlayan ortak bir yoldur. İki nesne arasındaki etkileşimi kolaylaştıran kararlaştırılmış bir davranışı temsil eder. Soyut sınıf, başlatılamayan veya bir nesnenin örneğini ayarlayamayan bir nesne sınıfıdır. Bu sınıfın bir uygulaması olmayabilir veya tamamlanmamış bir uygulaması olabilir.

Java, C ++, C #, üzerinde çalışabilmek için detaylı bir çalışma ve anlayış gerektiren karmaşık programlama dilleridir. Bu dillerde, dilin nasıl işe yarayacağına karar veren birçok farklı yöntem vardır. Arayüz ve Soyut Sınıf, OOP'nin bir parçası olan iki kafa karıştırıcı kavramdır (nesne yönelimli programlama). Bu ikisi ayrı ayrı veya birbirleriyle birlikte kullanılabilir. Bu ikisi birbirinden tamamen farklı ve farklı durumlarda kullanılıyor.

Java, C dilinden etkilenen bir programlama dilidir. Sözdiziminin çoğunu C ve C ++ 'dan alıyor, ancak her ikisinden de daha düşük seviyeli olanaklara sahip. Java, önceki dillere göre daha az uygulama bağımlılığı olacak şekilde tasarlanmış genel amaçlı bir programlama dilidir. Eş zamanlı, sınıf tabanlı ve nesne yönelimli bir dildir.

Java, Sun Microsystems'da James Gosling tarafından geliştirildi ve 1995 yılında piyasaya sürüldü. Aslen Sun Microsystems'in Java platformunun temel bir bileşeni olarak piyasaya sürüldü. Sun, o zamandan beri Java teknolojilerinin çoğunu GNU Genel Kamu Lisansı altında yeniden lisansladı. Bu, GNU Genel Kamu Lisansı altında lisanslı olan tüm teknolojinin açık kaynak ve genel olarak ücretsiz olduğu anlamına gelir. Sun Microsystems sonunda Oracle Corporation ile birleşti. 2012 itibariyle, Java kullanım için en popüler programlama dillerinden biri haline gelmiştir. Bu, özellikle istemci-sunucu web uygulamaları için geçerlidir. Diğer birçok sistem, Java için GNU Compiler ve GNU Classpath gibi Sun teknolojilerinin alternatif uygulamalarını geliştirmiştir.

Arabirim veya bir protokol, ilgisiz nesnelerin birbirleriyle iletişim kurmasını sağlayan ortak bir yoldur. İki nesne arasındaki etkileşimi kolaylaştıran kararlaştırılmış bir davranışı temsil eder. Arayüz uygulanmakta olan çeşitli eylemlerin anahtarını tutar ve iki farklı nesne arasında bir bağlantı görevi görür. Bir nesne sınıfı arabirime maruz kalırsa, sınıf arabirimin uyguladığı davranışı izlemelidir. Genellikle, arayüzler yalnızca sabit bildirimler ve yöntem imzaları içerir. Belirli bir arabirim uygulayan herhangi bir arabirim, arabirimde belirtilen tüm yöntemleri uygulamalı veya soyut bir sınıf olarak bildirilmelidir. Java'da, herhangi bir nesne, bu nesne null ise veya belirli bir arabirimi uyguladığı bir sınıfı tutuyorsa, bir arabirim olarak tanımlanabilir. Biri, bir anahtar kelimeyi kullanarak Java'daki tek bir sınıfa birden fazla arayüz uygulayabilir.

Soyut sınıf, başlatılamayan veya bir nesnenin örneğini ayarlayamayan bir nesne sınıfıdır. Bu sınıfın bir uygulaması olmayabilir veya tamamlanmamış bir uygulaması olabilir. Ayrıca, tüm alt sınıflar tarafından paylaşılan soyut yöntemlere veya özelliklere de sahip olabilir. Bazı programlama dillerinde, uygulanmayan soyut tipler, arayüzler olarak bilinir. Java'da, sınıf tanımındaki 'abstract' anahtar sözcüğünü kullanarak bir soyut tür oluşturulabilir. Soyut sınıfa uygulanmayan tüm yöntemleri yerleştirmek ve bu sınıfların nasıl uygulanacağını belirlemek için onu alt sınıfa bırakmak için soyut bir sınıfa sahip olma amacı. Bir sınıfın tek bir soyut yöntemi varsa, sınıfın soyut bir sınıf ilan etmek için en az bir tek yönteme sahip olmasına gerek kalmamasına rağmen, sınıf soyut sınıf olarak ilan edilmelidir.

Malliktalksjava.in, arayüz ile özet arasındaki ana farkları şöyle sıralar:

  • Soyut sınıfın kurucusu var ama arayüz yok.
  • Soyut sınıfların bazı üyeleri için uygulamaları olabilir (Metotlar), fakat arayüz herhangi bir üyesine uygulama yapamaz.
  • Soyut sınıflar, yararsız olacak başka alt sınıflara sahip olmalıdır.
  • Arayüzlerin başka sınıflar tarafından başka yararsız uygulamaları olacak uygulamaları olmalıdır.
  • Yalnızca bir arayüz başka bir arayüzü genişletebilir, ancak herhangi bir sınıf soyut bir sınıfı genişletebilir.
  • Arayüzlerdeki tüm değişkenler varsayılan olarak kesindir
  • Arayüzler çoklu kalıtım şekli sağlar. Bir sınıf yalnızca bir sınıfı daha genişletebilir.
  • Arayüzler, kamuya açık yöntemlerle sınırlıdır ve uygulama gerektirmeyen sabitlerle sınırlıdır. Soyut sınıflar kısmi bir uygulamaya, korunan parçalara, statik yöntemlere vb. Sahip olabilir.
  • Bir Sınıf birkaç arayüz uygulayabilir. Ancak, soyut sınıf durumunda, bir sınıf sadece bir soyut sınıfı uzatabilir.
  • Gerçek sınıftaki karşılık gelen yöntemi bulmak için ekstra aktarım gerektirdiğinden arayüzler yavaştır. Soyut sınıflar hızlı.
  • Erişilebilirlik değiştiricisine (Genel / Özel / dahili) soyut sınıf için izin verilir. Arayüz erişilebilirlik değiştiricisine izin vermiyor
  • Soyut bir sınıf, eksiksiz veya eksik yöntemler içerebilir. Arabirimler yalnızca bir yöntemin imzasını içerebilir ancak gövde içermez. Böylece soyut bir sınıf yöntemleri uygulayabilir, ancak bir arayüz yöntemleri uygulayamaz.
  • Soyut bir sınıf, alanlar, yapıcılar veya yıkıcılar içerebilir ve özellikleri uygulayabilir. Arabirim, alanlar, inşaatçılar veya yıkıcılar içeremez ve yalnızca mülkün imzasına sahiptir, ancak uygulaması yoktur.
  • Soyut, korumalı, dahili, genel, sanal, vb. Gibi çeşitli erişim düzenleyicileri soyut Sınıflarda faydalıdır ancak arayüzlerde kullanılamaz.
  • Özet kapsamı türetilmiş sınıfa kadar.
  • Arayüz kapsamı, kalıtım zincirinin herhangi bir seviyesine kadardır.

Tablodaki bilgiler codeproject.com ve mindprod.com'un izniyle

arayüzey

Soyut sınıf

Çoklu kalıtım

Bir sınıf çeşitli arayüzleri devralabilir.

Bir sınıf sadece bir soyut dersi miras alabilir.

Varsayılan uygulama

Bir arayüz herhangi bir kod sağlayamaz, sadece imza.

Soyut bir sınıf tam, varsayılan kod ve / veya sadece geçersiz kılınması gereken ayrıntılar sağlayabilir.

Erişim Değiştiriciler

Bir arayüz, alt, işlevler, özellikler vs. için erişim değiştiricilere sahip olamaz. Her şey genel olarak kabul edilir.

Soyut bir sınıf alt, fonksiyonlar, özellikler için erişim değiştiricileri içerebilir.

Çekirdek vs. Periferik

Arayüzler, bir sınıfın çevresel yeteneklerini tanımlamak için kullanılır. Başka bir deyişle, hem İnsan hem de Araç IMovable bir arayüzden miras alabilir.

Soyut bir sınıf, bir sınıfın çekirdek kimliğini tanımlar ve orada aynı türdeki nesneler için kullanılır.

homojenlik

Çeşitli uygulamalar yalnızca yöntem imzalarını paylaşıyorsa, Arayüzleri kullanmak daha iyidir.

Eğer çeşitli uygulamalar aynı türdeyse ve ortak davranış ya da statü kullanıyorsa, soyut sınıfın kullanılması daha iyidir.

hız

İlgili yöntemi bulmak için gerçek yöntemi bulmak için daha fazla zaman gerekir.

Hızlı

İşlev ekleme

Bir Arayüze yeni bir yöntem eklersek, o zaman ara yüzün tüm uygulamalarını izlemeli ve yeni yöntem için uygulamayı tanımlamalıyız.

Soyut bir sınıfa yeni bir yöntem eklersek, varsayılan uygulama sağlama seçeneğine sahibiz ve bu nedenle mevcut tüm kodlar düzgün çalışabilir.

Alanlar ve Sabitler

Arayüzlerde hiçbir alan tanımlanamaz.

Soyut bir sınıfta tanımlanmış alanlar ve sabitler olabilir.

kısa ve öz olma

Bir arabirimdeki sabit bildirimlerin tümü genel statik statik olduğu varsayılır.

Paylaşılan kod soyut bir sınıfa eklenebilir.

Sabitler

Yalnızca statik son sabitler, arabirimi uygulayan sınıflarda kalifiye olmadan bunları kullanabilir.

Hem örnek hem de statik sabitler mümkündür. Sabitleri hesaplamak için hem statik hem de örnek intialiser kodu da mümkündür.

Üçüncü Parti Kolaylığı

Herhangi bir üçüncü taraf sınıfa bir arayüz uygulaması eklenebilir.

Üçüncü sınıf bir sınıf sadece soyut sınıftan yayılmak için yeniden yazılmalıdır.

is-a vs. -able veya can-do

Arayüzler, bir sınıfın çevresel kimliğini değil, merkezi kimliğini değil, çevresel yeteneklerini tanımlamak için kullanılır, örneğin, Automobile sınıfı, aksi takdirde pek alakasız nesneler için geçerli olan Geri Dönüşümlü arayüzü uygulayabilir.

Soyut bir sınıf, torunlarının öz kimliğini tanımlar. Uygulanan arayüzler, bir sınıfın yapabileceği şeyleri değil, bir sınıfın yapabileceği genel şeyleri numaralandırır.

Bir Java bağlamında, kullanıcılar, Thread'ı genişletmek yerine genellikle Runnable arabirimini uygulamalıdır, çünkü yeni bir Thread işlevi sağlamakla ilgilenmezler, normalde sadece bir kodun bağımsız olarak çalışabilme özelliğine sahip olmasını isterler. Yeni bir tür iplikten değil, bir dizide çalıştırılabilecek bir şey yaratmak istiyorlar. Miras almaya ya da delege etmeye karar verdiğinizde benzer olan-a-has-a-tartışması ortaya çıkar.

Eklenti

Kullanıcı, mevcut uygulamalarla ortak olarak tek bir kod çubuğu içermeyen bir arayüz için yeni bir değiştirme modülü yazabilir. Kullanıcı arayüzü uygularsa, varsayılan uygulama olmadan sıfırdan başlar. Kullanıcı diğer sınıflardan araçlar almak zorundadır; Arayüzle birkaç sabitten başka hiçbir şey gelmiyor. Bu, kullanıcıya radikal biçimde farklı bir iç tasarım uygulama özgürlüğü verir.

Kullanıcı, iyi veya kötü tüm görevli bagajıyla birlikte, kod tabanı için olduğu gibi soyut sınıfı kullanmalıdır. Soyut sınıf yazarı, kullanıcıya bir yapı koydu.

Bakım

Eğer müşteri kodu sadece bir arayüzden bahsediyorsa, arkasındaki somut uygulamayı bir fabrika metodu kullanarak kolayca değiştirebilirsiniz.

Müşteri kodu yalnızca soyut bir sınıftan bahsediyorsa, bir fabrika yöntemini kullanarak arkasındaki somut uygulamayı kolayca değiştirebilirsiniz.

Tavsiye

İlgili Makaleler

  • popüler karşılaştırmalar: Samsung Galaxy Tab 3 10.1 ve Samsung Galaxy Tab 3 8.0 arasındaki farklar

    Samsung Galaxy Tab 3 10.1 ve Samsung Galaxy Tab 3 8.0 arasındaki farklar

    Önemli Fark: Samsung Galaxy Tab 3 10.1, cihazda sunulan 10.1 inçlik ekrandan sonra adlandırılıyor. Cihaz, 8 inçlik eşdeğeri ile aynı çözünürlükte geliyor ve bu da ppi yoğunluğunu 149 ppi'ye düşürüyor. Cihaz, Intel tarafından sağlanan 1, 6 GHz çift çekirdekli Atom işlemcisi tarafından desteklenecek ve 1 GB RAM sunacak. Samsung, sürekli genişle
  • popüler karşılaştırmalar: Kasırga ve Kasırga Arasındaki Fark

    Kasırga ve Kasırga Arasındaki Fark

    Temel Fark: Bir kasırgaya ayrıca bir tür siklon yapan tropikal bir kasırga da denir. Bir siklon ve bir kasırganın sadece birkaç farkı var. Tropik bölgelerde, Atlantik ve Pasifik Okyanusu'ndaki ılık sularda bir kasırga bulunurken, Güney Pasifik Okyanusu ve Hint Okyanusunda siklonlar bulunur. Bir kasırga
  • popüler karşılaştırmalar: Düşen ve Düşen arasındaki fark

    Düşen ve Düşen arasındaki fark

    Anahtar fark: 'Buna rağmen' ve 'ilham' ifadesi, kontrastı ifade etmek için kullanılan edatlardır. 'Buna rağmen' terimi genellikle İngilizce'de daha yaygın olarak kullanılır ve bazen 'inspite' ile eşanlamlı olarak da kabul edilir. Hem 'rağmen' hem de 'ilham' hem İngilizce'de zamirler, hem de bu, ne, vb. İle birlikte
  • popüler karşılaştırmalar: Anaokulu ve Anaokulu Arasındaki Fark

    Anaokulu ve Anaokulu Arasındaki Fark

    Anahtar fark: Anaokulu, bir çocuğun örgün eğitimine öncülüğünü oluşturan bir eğitim kurumudur. Oyunda anaokulu, anaokulu eğitiminin öncüsü olarak hareket eder. Anaokulu, 'çocukların bahçesi' anlamına gelen Fridrick Frobel tarafından yazılan bir Almanca terimdir. Bir anaokulunda, bir çocuğun fonetik ve okuma konusundaki temel bilgileri kazanması beklenir. Bir anaokulu deneyimi, i
  • popüler karşılaştırmalar: Eş ve Kız Arkadaş Arasındaki Fark

    Eş ve Kız Arkadaş Arasındaki Fark

    Anahtar fark : Bir Eş ve Bir Kız Arkadaş arasındaki en önemli fark, karının bir erkekle yasal olarak evli olmasıdır, oysa bir kız arkadaşı bir arkadaş olabilir ama onunla evlenemez. Bir eş ve bir kız arkadaşı arasında çok fazla fark var. Bu makale iki bayan arasındaki farkı belirtiyor. Bir eş, evliliğin k
  • popüler karşılaştırmalar: Nook Wi-Fi ve Wi-Fi / 3G arasındaki fark

    Nook Wi-Fi ve Wi-Fi / 3G arasındaki fark

    Önemli fark: Nook, Barnes & Noble'dan bir E-Okuyucu'dur. Android platformuna dayanmaktadır. Temelde Nook Wi-Fi ve Wi-Fi / 3G arasında sadece üç fark var: bağlantı, estetik ve ağırlık. Nook, Barnes & Noble'dan bir E-Okuyucu'dur. Android platformunu temel alır ve piyasaya sürüldüğü zaman Android sürüm 1.5'i destekler
  • popüler karşılaştırmalar: Dezenfeksiyon ve Sterilizasyon Arasındaki Fark

    Dezenfeksiyon ve Sterilizasyon Arasındaki Fark

    Anahtar Fark: Dezenfeksiyon, hastalık üreten mikroorganizmaların çoğunu öldüren süreci ifade eder. Öte yandan, sterilizasyon, herhangi bir ürünü canlı mikroorganizmalardan arındırmak için kullanılan prosesi ifade eder. Dezenfeksiyon ve sterilizasyon, hastalıklara neden olabilecek mikroorganizmaları gidermek için kullanılan her iki işlemdir. Bununla birlikte, de
  • popüler karşılaştırmalar: Tehlike Altındaki ve Tehdit Edilen Arasındaki Fark

    Tehlike Altındaki ve Tehdit Edilen Arasındaki Fark

    Anahtar fark: Tehlike altındaki ve tehdit altındakiler eş anlamlıdır. Her ikisi de belli miktarda tehlikeyle karşı karşıya. İki terim sıklıkla gezegenimizdeki varlığı risk altında olan türlere atıfta bulunmak için kullanılır. Nesli tükenmekte olan ve tehdit altındakiler, doğaları birbirine çok benzeyen iki terimdir. Esasen aynı şeyi kastedi
  • popüler karşılaştırmalar: Mermer ve Granit Arasındaki Fark

    Mermer ve Granit Arasındaki Fark

    Önemli Fark : Mermer ve Granit, her ikisi de taş, montajı zor, pahalı ve zaman alan ürünlerdir. Mermer, sert, genellikle çok cilalı bir taş türüdür. Öte yandan, granit aynı zamanda sert fakat genellikle gri veya kırmızı kaya türüdür. Her ikisi de heykel ve yapı için kullanılır. Mermer ve granit arası

Editörün Seçimi

Balmumu ve Balmumu Dışı Diş ipi arasındaki fark

Anahtar Fark: Mumlu diş ipi, mumlu diş ipinin dişler arasındaki küçük boşluklar arasında kolayca kayması dışında, mumsuz diş ipi gibidir. Her iki diş ipi türü için dişler ve plaklar arasında sıkışan gıdanın çıkarılması için temizlik verimliliği aynıdır. Diş ipi, interdental hijyen için çok etkili bir araçtır. Veba çıkarılmasında yardımcı olur ve