Pytania otagowane jako inheritance

Dziedziczenie to sposób na ponowne użycie kodu istniejących obiektów lub ustanowienie podtypu z istniejącego obiektu, lub obu, w zależności od obsługi języka programowania.


2
Dlaczego Java nie obsługuje dziedziczenia prywatnego / chronionego, takiego jak C ++? [Zamknięte]
W obecnej formie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi poparte będą faktami, referencjami lub wiedzą fachową, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i ewentualnie ponownie otworzyć, odwiedź centrum pomocy w …


5
Czy w tym scenariuszu powinienem preferować kompozycję lub dziedziczenie?
Rozważ interfejs: interface IWaveGenerator { SoundWave GenerateWave(double frequency, double lengthInSeconds); } Interfejs ten jest implementowany przez wiele klas, które generują fale o różnych kształtach (na przykład SineWaveGeneratori SquareWaveGenerator). Chcę zaimplementować klasę, która generuje SoundWavedane muzyczne, a nie surowe dane dźwiękowe. Otrzyma nazwę nuty i długość wyrażoną w uderzeniach (nie sekundach) …

5
Oddzielny interfejs dla metod mutacji
Pracowałem nad refaktoryzacją kodu i myślę, że mogłem zrobić pierwszy krok w stronę króliczej nory. Piszę przykład w Javie, ale przypuszczam, że może być agnostyczny. Mam interfejs Foozdefiniowany jako public interface Foo { int getX(); int getY(); int getZ(); } I wdrożenie jako public final class DefaultFoo implements Foo { …

9
Jakiego projektu OO użyć (czy istnieje wzorzec projektu)?
Mam dwa przedmioty reprezentujące „Bar / Klub” (miejsce, w którym pijesz / spędzasz czas z przyjaciółmi). W jednym scenariuszu potrzebuję nazwy paska, adresu, odległości, hasła W innym scenariuszu potrzebuję nazwy paska, adresu, adresu URL strony internetowej, logo Mam więc dwa obiekty reprezentujące to samo, ale z różnymi polami. Lubię używać …

5
Jak wdrożyć dziedziczenie RealNumber i ComplexNumber?
Mam nadzieję, że nie jest zbyt akademicki ... Powiedzmy, że potrzebuję prawdziwych i złożonych liczb w mojej bibliotece SW. Na podstawie relacji is-a (lub tutaj ) liczba rzeczywista jest liczbą zespoloną, gdzie b w urojonej części liczby zespolonej wynosi po prostu 0. Z drugiej strony, moja implementacja byłaby taka, że …

5
Czy kiedykolwiek można naruszać LSP?
Kontynuuję to pytanie , ale skupiam się z kodu na zasadzie. Z mojego zrozumienia zasady podstawienia Liskowa (LSP), wszystkie metody w mojej klasie bazowej muszą być zaimplementowane w mojej podklasie i zgodnie z tą stroną, jeśli zastąpisz metodę w klasie bazowej i nie robi ona nic ani nie rzuca wyjątek, …

1
Czy jest sytuacja, w której lepiej byłoby użyć słabych referencji zamiast prostej kompozycji?
Chociaż docs Java określić, że odniesienia Słabe są przede wszystkim dla canonicalizing mapowania, znajdziesz wiele , wiele , wiele ludzi w internecie stwierdzające, że WeakHashMap jest idealny do przechowywania metadanych obiektu w trakcie jego trwania. Jednak nikt nie zadaje sobie trudu, aby podać zrozumiały I odpowiedni przykład. Używanie WeakHashMap do …

2
Czy dziedziczenie Pythona jest stylem dziedziczenia „czy jest”, czy stylem kompozytorskim?
Biorąc pod uwagę, że Python pozwala na wielokrotne dziedziczenie, jak wygląda dziedziczenie idiomatyczne w Pythonie? W językach z pojedynczym dziedziczeniem, takich jak Java, dziedziczenie byłoby stosowane, gdy można by powiedzieć, że jeden obiekt „jest-a” innego obiektu i chcesz współdzielić kod między obiektami (od obiektu nadrzędnego do obiektu podrzędnego). Na przykład …

3
Dziedziczenie: czy kod z nadklasy jest praktycznie * kopiowany * do podklasy, czy też jest * określany przez podklasę *?
Klasa Subjest podklasą klasy Sup. Co to znaczy praktycznie? Lub innymi słowy, jakie jest praktyczne znaczenie „dziedzictwa”? Opcja 1: Kod z Sup jest praktycznie kopiowany do Sub. (jak w „kopiuj-wklej”, ale bez skopiowanego kodu widocznego wizualnie w podklasie). Przykład: methodA()jest metodą pierwotnie w Sup. Sub rozszerza Sup, więc methodA()jest (praktycznie) …

12
Czy „jeśli metoda jest ponownie używana bez zmian, umieść ją w klasie bazowej, w przeciwnym razie stwórz interfejs” to dobra zasada?
Mój kolega wymyślił ogólną zasadę wyboru między tworzeniem klasy podstawowej a interfejsem. On mówi: Wyobraź sobie każdą nową metodę, którą zamierzasz wdrożyć. Rozważ to dla każdego z nich: czy ta metoda zostanie zaimplementowana przez więcej niż jedną klasę w dokładnie tej formie, bez żadnych zmian? Jeśli odpowiedź brzmi „tak”, utwórz …

2
Dlaczego odradza się stosowanie konstruktorów podczas tworzenia prototypów?
Szybkie tło: W JavaScript funkcja konstruktora dla każdego typu obiektu ma prototypewłaściwość. prototypeOdnosi się do obiektu, co wykonane zastosowania obiektu jako Następnym krokiem w łańcuchu prototypu. Jeśli chcesz, aby jeden typ był nieodłączny od innego typu, możesz ustawić prototypetyp podrzędny na nową instancję typu nadrzędnego. Na przykład: var Parent = …



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.