2012-01-19 26 views
7

Aşağıdakiler tamam mı? (Ben sınıfların cesetleri yazmadım olduğunu akılda tutmak ve ben de arabirimleri yazmadım ;-))Her biri kendi arabirimi olan alt sınıf ve alt sınıflar

abstract class SuperClass implements SuperInterface 

class SubClass extends SuperClass implements SubInterface 

Ya da bu genelde göz önünde kötü bir uygulamadır?

List<SubInterface> myList; 
... 
for(SuperInterface si : myList) { 
    ... 
} 
+0

Bu kod düzgün olmayabilir, lütfen tekrar kontrol edin. – SHiRKiT

+0

Bunun kötü bir uygulama olduğundan şüphelenmek için nedenleriniz var mı? Bu nedenleri açıklayabilir misiniz? – Jesper

+3

Neden doğru olamaz? bana iyi görünüyor –

cevap

10

arasında uzanır. SubClass burada hem SuperInterface hem de SubInterface (SuperClass 'genel yöntemleri tarafından tanımlanan arabirimin yanı sıra) uygular. Eğer ihtiyacınız olan buysa - bu iyi. İkinci örnek

List<SubInterface> myList; 
... 
for(SuperInterface si : myList) { 
    ... 
} 

gelince

Sen SubInterface elemanlarının listesini ilan etmesine karşın ondan SuperInterface elemanlarını alıp istiyorum. SubInterface, SuperInterface'u genişletirse, bunun bir anlamı vardır. Aksi takdirde değil.

+0

Doğru, açıklamanız için çok teşekkür ederim! –

1

bu elde etmek istediğinize bağlı gayet (Yapmaya çalıştığınız ne için daha iyi bir tasarım olabilir): me, şu işe yaramadı yani merak yapılmış ne

SubClass'ın hem SuperInterface hem de Alt Arabirim olduğunu unutmayınız. Alt satırlar

3

Doğrudur. Neden olmasın ?

SuperClass'ınız, Alt Sınıfınız tarafından da uygulanan bir SuperInterface uygular (Alt Sınıf, SuperClass'ı genişletir). Ayrıca, Alt Sınıfınız başka bir arabirim (Alt Arabirim) uygular.

Kodunuz/mimarinizde yanlış bir şey yok. nedeniyle

SuperClass -- implements --> SuperInterface 
SubClass -- extends --> SuperClass -- implements --> SuperInterface*, SubInterface 
  • Örtülü uygular SuperClass
  • İyi ya da kötü olduğunu
İlgili konular