Sen heyeti ile mirası karıştırıyorsun. Hataİşleyici gerçekten dbCon bir temsilci olmalıdır.
A sınıfı bir B bir alt sınıfı olmalıdır eğer belirleyen bir kullanışlı bir yoldur diyerek kendinize sormak için "bir B daha bir şey daha spesifik bir tür." Yani, yaptığı A B Bu doğrudur ve aynı zamanda değil nerede bir örnek at least, tüm temel nitelikleri ve davranışları var:
DOĞRU: kedi bir puma is a türü.
YANLIŞ: arabanın bagajına is a türü.
- YANLIŞ: plak, yürütmenin bir avukat is a türü.
2. durumda, bir kamyon part bir araç olduğunu, bu nedenle bu model doğru yolu kompozisyon gereğidir; sonra Trunk nesnesine bir başvuru içeren bir Araç nesnesi var.
3 durumunda, bir avukat, bir delegate plak yürütmenin olup; Bu modellemek için doğru yolu RLExective nesne bilen bir veya daha fazla Avukatlar bir başvuru tutun ve ihtiyaç duyulduğunda RLExecutive Avukatlar herhangi birinde SueCollegeStudentOrGrandmother () yöntemini çağırmak zorunda olması gereğidir.
Burada hiyerarşi, sen diyorsun ki dbCon arasında Hataİşleyici is a türü. Bu hiç mantıklı değil. Bu Hataİşleyici kullanım hataları ile görevli dbCon bir delegate, olduğunu söylemek daha doğru olacaktır. Bu durumda, muhtemelen bir freefloating Hataİşleyici nesne, ya da belki DB hataları hakkında spesifik bilgi ile bir isterim. DbCon onu görüntülemek isteyen bir hata alır zaman, bu ShowError () yöntemiyle Hataİşleyici üzerinde hata atar.
Yorumlarınız dayanarak, bu karışıklık extends anlamında yatıyor görünüyor. Hataİşleyici extends dbCon derken, siz Hataİşleyici dbCon ek işlevsellik ekler değil, Hataİşleyici dbCon bir alt sınıfı olduğunu söyledi. Bu dbCon and Hataİşleyici işlevselliği hem olurdu Hataİşleyici bir örneğini oluşturmak zorunda kalacak anlamına gelir. Bu ne istediğinizi muhtemelen değildir.
Bu anlamda yapılan umuyoruz.