Nasıl arayüzleri birden çok devralma gereğini yerine mevcut sınıflar olabilir
Özür dilerim bu yazı için öncelikle.... Birden çok devralma tartışıyor olan stackoverflow birçok birçok mesaj olduğunu biliyorum. Ama zaten Java çoklu kalıtım desteklemez ve arabirim kullanarak bir alternatif olması gerektiğini biliyorum. Ama benim ikilem görmüyorum:
Çok çok büyük ve karmaşık bir aracı Java ile yazılmış üzerinde değişiklikler yapmak zorundayım. Bu araç, bir veri yapısına bağlı üye bir hiyerarşi ile birçok farklı sınıf nesneleri ile inşa edilmiştir. Neyse
- Bir Dersim var birden çok yöntem vardır ve bir nesne etiketi nesnenin sınıfına bağlı olarak verir,
Tagged
. Üyeleri ve statik değişkenlere ihtiyaç duyar. - Ve ikinci sınıf
XMLElement
denilen nesne bağlantısı ve sonunda bir XML dosyası oluşturmak için izin verir. Ben de buraya üye ve statik değişkenlere ihtiyacımız var. - Nihayet, neredeyse tüm
XMLElement
bazılarıTagged
genişletmek gereken çok bu veri sınıfları var.
Tamam, bu sadece bir sınıf uzatmak olduğu için işe yaramaz. Java ile her şeyin yolunda olduğuna çok sık okudum ve birden çok devralma olması için gerek yok. Ama bir arabirim miras değiştirmeniz gerekir nasıl görmüyorum inanıyorum.
- Hiçbir anlamı aynı olduğundan, tüm veriler sınıflarda gerçek uygulama her zaman olur ama bu arayüzleri (sanırım) gerekli olurdu.
- Bir arayüz miras derslerimden biri değiştirebilirim nasıl görmüyorum. Burada değişkenler var ve tam olarak ne var.
Gerçekten biri bu konuyu bana açıklayabilir lütfen almıyorsun?
CEVAP
Muhtemelen miras üzerinden kompozisyon (heyet) iyilik gerekir :
public interface TaggedInterface {
void foo();
}
public interface XMLElementInterface {
void bar();
}
public class Tagged implements TaggedInterface {
// ...
}
public class XMLElement implements XMLElementInterface {
// ...
}
public class TaggedXmlElement implements TaggedInterface, XMLElementInterface {
private TaggedInterface tagged;
private XMLElementInterface xmlElement;
public TaggedXmlElement(TaggedInterface tagged, XMLElementInterface xmlElement) {
this.tagged = tagged;
this.xmlElement = xmlElement;
}
public void foo() {
this.tagged.foo();
}
public void bar() {
this.xmlElement.bar();
}
public static void main(String[] args) {
TaggedXmlElement t = new TaggedXmlElement(new Tagged(), new XMLElement());
t.foo();
t.bar();
}
}
Nasıl birden fazla sınıflar ile bir öğ...
Nasıl bir HTML kabı için birden fazla ...
Nasıl bir boşluk ile birden fazla beya...
Nasıl linux komut satırında birden faz...
Birden fazla sınıflar arasında nasıl k...