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: Çöp ve Çöp Arasındaki Fark

    Çöp ve Çöp Arasındaki Fark

    Anahtar Fark: Çöp ve çöp her ikisi de atık ürünleri ifade eder. Bununla birlikte, bir kelime olarak çöpler genellikle mikroorganizmalar tarafından ayrıştırılabilecek atık ürünler ile ilişkilendirilir ve çöpler genellikle, ayrışmayan veya bozulmayan diğer atık ürünler ile ilişkilendirilir. Çöp ve çöp, sıklıkla birb
  • popüler karşılaştırmalar: Cennet ve Cennet Arasındaki Fark

    Cennet ve Cennet Arasındaki Fark

    Anahtar Fark: Cennet, Tanrı, melekler, cinler ve daha pek çok şey gibi cennetsel bedenlerin gökyüzüne veya dünyanın üstündeki alana yerleştirildiği bir yerdir. Cennet, varlığın olumlu, hoş bir ses veren ve ebedi olduğu bir yer için dini bir terimdir. Mutluluk, mutluluk ve mutluluğun olduğu bir yer. Cennet ve Cennet m
  • popüler karşılaştırmalar: Tekvando ve Karate arasındaki fark

    Tekvando ve Karate arasındaki fark

    Anahtar fark: İki savaş sanatı biçimi kökenlerine göre farklılık gösterir. Taekwondo modern bir Koreli savaş sanatı ve bir dövüş sporudur, oysa Karate, genellikle spor açısından uygulanan bir Japon savaş sanatıdır. Tekvando Güney Kore'de doğdu; genellikle kendini savunma için uygulanan askeri sanat biçimlerinden biriydi. Aynı zamanda Kore ülke
  • popüler karşılaştırmalar: Apple ve Windows arasındaki fark

    Apple ve Windows arasındaki fark

    Anahtar Farkı: Apple, grafiksel bir kullanıcı arayüzü etrafında tasarlanmıştır. Apple Inc, daha önce Apple Computer Inc olarak biliniyordu. Apple sistemi farklı işletim sistemlerine ayrılmıştı: Mac bilgisayar serisi, iPod müzik çalar, iPhone akıllı telefon ve iPad tablet bilgisayar. Windows, Microsoft
  • popüler karşılaştırmalar: Yağ ve Ghee arasındaki fark

    Yağ ve Ghee arasındaki fark

    Anahtar fark : Ghee berrak bir tereyağı türüdür, yağ ise viskoz, nötr ve polar olmayan bir kimyasal maddedir. İki gıda maddesi arasındaki fark içeriklerine, hazırlama yöntemlerine ve kullanımlarına dayanır. Güney Asya ve Orta Doğu ülkelerinde 'ghee' olmayan bir yemek eksik olarak kabul edilirken, aynı yemek yağda ve ağızda sulanan baharatlarla pişirilmezse tatsız olarak kabul edilir. Hem yağ hem de ghee, bi
  • popüler karşılaştırmalar: Skinny Jeans ve Havuç Jeans Arasındaki Fark

    Skinny Jeans ve Havuç Jeans Arasındaki Fark

    Anahtar Fark: Skinny Jeans vücudu sarılıyor ve ciltle birlikte kıvrılıyor; Vücudun her yerinde sıkıdırlar. Havuç Jeans, bel ve uylukta gevşektir ve baldırdan daha sıkıdır. Kıyafet hayatımızın önemli bir parçası haline gelmiştir; kıyafet türü, marka, tarz ve eğilim bir insanı tanımlar. Ticari pazara girdiklerinden
  • popüler karşılaştırmalar: Kültür ve Toplum Arasındaki Fark

    Kültür ve Toplum Arasındaki Fark

    Anahtar Fark: Kültür, bir toplumu belirli bir zamanda tanımlayan özellikleri yansıtır; ve kültür çoğunlukla sanat formlarıyla ilişkilidir. Öte yandan toplum, dil, kıyafet, davranış normları ve sanatsal formlar gibi kültürel yönleri paylaşan uzun süredir devam eden bir grup insandır. Wikipedia, kültürü “T
  • popüler karşılaştırmalar: Özürlü ve Engelli Kişi Arasındaki Fark

    Özürlü ve Engelli Kişi Arasındaki Fark

    Anahtar fark: Engelliler ve engelli kişilerin terimleri genellikle birbirinin yerine kullanılır, ancak gerçek anlamlarında farklılık gösterir. ' Engelli biri' fiziksel ya da zihinsel engelli bir birey iken, ' engelli kişi' genellikle fiziksel, zihinsel ya da duygusal bozulma tarafından belirlenen bazı engelli bir kişidir. Engelli bi
  • popüler karşılaştırmalar: Nexus 4 ve Nexus 5 arasındaki fark

    Nexus 4 ve Nexus 5 arasındaki fark

    Anahtar fark : Nexus 4 ve Nexus 5 telefonları, ikisi de Google ürünüdür. Her ikisi de aynı özelliklere sahip Android telefonlar, ancak iki telefon arasındaki fark Nexus 5'in Nexus 4'ün yükseltilmiş bir versiyonu olması. Akıllı telefonlar birçok insan için bir yaşam tarzı haline geldi ve hareket halindeyken her şeyi yapmalarını sağladı. Buna belge yazmayı, a

Editörün Seçimi

VIP ve VVIP arasındaki fark

Temel Fark: VIP Çok Önemli Kişi, VVIP Çok Çok Önemli Kişi anlamına gelir. VIP'ler normal bir kişiden daha önemli olarak kabul edilir. VVIP, VIP'den bile daha önemli olarak kabul edilen bir kişidir. İnsanlar hepsinin eşit olduğunu iddia etse veya hepsinin eşitliğini talep etse de, meselenin gerçeği, hepsinin eşit olmadığı, bazılarının diğerlerinden daha eşit olduğu. Bunun anlamı, bazı insanlar