«inheritance» etiketlenmiş sorular

Kalıtım, programlama dili desteğine bağlı olarak mevcut nesnelerin kodunu yeniden kullanmanın veya mevcut bir nesneden veya her ikisinden bir alt tür oluşturmanın bir yoludur.

4
Dinamik dillerde miras mı yoksa mixin mi?
Dinamik dillerde karışımlara göre kalıtım kalıplarını ne zaman tercih etmelisiniz? Mixins ile, çalışma zamanında bir nesneye işlevler ve veri üyeleri eklerken olduğu gibi gerçek uygun karıştırma anlamına gelir. Örneğin, mixins yerine prototippal mirasını ne zaman kullanırsınız? Mixin ile ne demek istediğimi daha açık bir şekilde göstermek için, bazı sözde kod: …

1
Bertrand Meyer neden alt sınıflamanın “kapalı” bir modülü genişletmenin tek yolu olduğunu düşünüyor (/ yaptı)?
Meyer'ın Nesneye Dayalı Yazılım Yapımında (1988) açık / kapalı prensibini şu şekilde tanımlar : Bir modül hala uzatma için mevcutsa açık olacaktır. Örneğin, içerdiği veri yapılarına alan veya gerçekleştirdiği işlevler kümesine yeni öğeler eklemek mümkün olmalıdır. Bir modülün başka modüller tarafından kullanılabilmesi için kapalı olduğu söylenecektir. Bu, modüle iyi tanımlanmış, …

3
“Dikdörtgenden Kare Miras” paradoksu için belirli bir isim var mı?
Belirli bir OOP arızası, Dikdörtgen'den devralınan bir Kare sınıfı sınıfı ile gösterilir; burada mantıksal olarak Kare bir Dikdörtgen uzmanlığıdır ve bu nedenle miras almalıdır, ancak bir Meydanın uzunluğunu veya genişliğini değiştirmeye çalıştığınızda her şey parçalanır. Bu durumda neyin yanlış gittiğini açıklamak için özel bir terim var mı?

5
Miras ne zaman kullanılır, 'sadece bir boole alanı' ne zaman kullanılır?
Rails uygulamamızda bildirim ekliyoruz. Bunlardan bazıları blocking: Eklendikleri kaynakların ilerlemesini durdururlar, çünkü bu kaynakla ilgili bazı bilgiler eksiktir. Diğer bildirimler basit bildirimlerdir ve yalnızca bilgi sağlar. Bugün ekibimizdeki başka bir programcıyla görüştüm. Kalıtım yapısını şöyle yarattım: Bununla birlikte, blockingher bir Bildirime yalnızca bir boole döndürme yöntemi olarak eklememi ve Bildirim …

4
Java'da neden 'yalnızca alt sınıflar' erişim değiştiricisi yok?
Java'da, yöntemler için kullanılabilir dört erişim değiştirici vardır: public - herhangi bir sınıf bu yöntemi kullanabilir. protected - aynı paketteki sınıflar ve herhangi bir paketteki alt sınıflar bu yöntemi kullanabilir. private - yalnızca bu sınıf bu yöntemi kullanabilir. no modifier ("package private") - yalnızca aynı paketteki sınıflar bu yöntemi kullanabilir. …


14
Kalıtımın yararını nasıl açıklayabilirim? [kapalı]
Şu anda olduğu gibi, bu soru Soru-Cevap formatımıza uygun değil. Yanıtların gerçekler, referanslar veya uzmanlık tarafından desteklenmesini bekliyoruz, ancak bu soru muhtemelen tartışma, tartışma, oylama veya genişletilmiş tartışma talep edecektir. Bu sorunun çözülebileceğini ve muhtemelen yeniden açılabileceğini düşünüyorsanız, yardım için yardım merkezini ziyaret edin . 6 yıl önce kapalı . …

1
Kalıtım hiyerarşisinde Liskov ikame ilkesi nasıl doğrulanır?
Bu yanıttan ilham alındı : Liskov İkame İlkesi şunu gerektirir : Bir alt tipte önkoşullar güçlendirilemez. Alt koşullar bir alt türde zayıflatılamaz. Süpertipin değişmezleri bir alt tipte korunmalıdır. Geçmiş kısıtı ("geçmiş kuralı"). Nesneler yalnızca yöntemleri (kapsülleme) yoluyla değiştirilebilir olarak kabul edilir. Alt tipler, üst tipte bulunmayan yöntemler getirebileceğinden, bu yöntemlerin …

6
Korunan yöntemler için gerçek dünya senaryoları
Bugün temelde hiçbir zaman protectedC ++ kodunda yöntemleri kullanmadım , çünkü nadiren bir ebeveynin genel olmayan yöntemlerini çağırma ihtiyacını hissediyorum. Java'da korumalı şablon yöntem desenini kullanıyorum, ancak C ++ özel yöntemlerini geçersiz kılabildiğiniz için, protectedorada da ihtiyacım yok. Peki protectedC ++ kodunda yöntemleri kullanmak isteyeceğim bazı gerçek dünya senaryoları nelerdir? …

8
“Miras yerine kompozisyonu tercih et” - İmza değişikliklerine karşı savunmanın tek nedeni mi?
Bu sayfa , miras üzerinde kompozisyonu aşağıdaki argümanla savunuyor (kelimelerimde yeniden ifade etti): Üst sınıf yönteminin imzasındaki bir değişiklik (alt sınıfta geçersiz kılınmamış olan), Devralma kullandığımızda birçok yerde ek değişikliklere neden olur. Ancak, Kompozisyon'u kullandığımızda, gerekli ek değişiklik yalnızca tek bir yerde bulunur: Alt sınıf. Miras yerine kompozisyonu tercih etmenin …

2
Bir paketleyiciye çok sayıda düz geçiş işlevi yazmaktan nasıl kaçınırım?
Ortak bir temel türü başka bir sınıfı sarar bir sınıf var. Taban tipi arabirim oldukça büyük olduğundan, çok sayıda geçiş işlevi yazmayı içerir. Bundan kaçınmanın bir yolunu arıyorum. Bir örnek verelim: Car / \ Volvo VolvoWithTrailer Şimdi VolvoWithTrailer için araç arayüzündeki her bir işlevi uygulamak ve daha düşük bir şey …

3
Kalıtım üzerine kompozisyon ama
Kendime yazılım mühendisliğini öğretmeye çalışıyorum ve beni şaşırtan bazı çelişkili bilgilere karşı geliyorum. OOP ve soyut sınıfların / arayüzlerin ne olduğunu ve nasıl kullanıldığını öğreniyorum, ama sonra 'kompozisyonu kalıtımdan yana tutması' gerektiğini okuyorum. Kompozisyon, bir sınıfın bu yeni nesnenin işlevselliğini kullanmak / etkileşimde bulunmak için başka bir sınıfın nesnesini oluşturması …

2
Türetilmiş sınıf ham dinamik bellek ayırmıyorsa neden temel sınıfın burada sanal bir yıkıcıya ihtiyacı var?
Aşağıdaki kod bellek sızıntısına neden oluyor: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) …

5
Kalıtım ve boş değerli ek mülk
İsteğe bağlı alanları olan sınıflar için, miras veya boş değerli bir özellik kullanmak daha mı iyidir? Bu örneği düşünün: class Book { private String name; } class BookWithColor extends Book { private String color; } veya class Book { private String name; private String color; //when this is null then …
12 java  inheritance  class  null 


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.