Dlaczego klasa abstrakcyjna nie może występować samodzielnie?

2015-02-16 09:40
0

Dlaczego klasa abstrakcyjna nie może występować samodzielnie?
Szukam jasnej odpowiedzi najlepiej podpartej przykładem bo nikumajet ;]

pzdr

Pozostało 580 znaków

2015-02-16 09:47
4

Rozumiem że chodzi o instancję :). Mniej więcej z takiego samego powodu z jakiego nie możesz pojechać samochodem bez kół na wakacje. Kierownica, pedały i drążek zmiany biegów wprawdzie jest (interfejs), ale jednak sporej części brakuje. A w programowaniu niekompletnym klasom mówimy stanowcze nie!

Pozostało 580 znaków

2015-02-16 09:53
Pijany Orzeł

bo takie jest założenie klasy abstrakcyjnej - to abstrakcja, wspólny szablon dla klas właściwych - sam w sobie nie jest kompletny, musisz z niego dziedziczyć i zaimplementować brakujące funkcje abstract - bez nich klasa jest niekompletna

Pokaż pozostałe 4 komentarze
Chodzi chyba o to że klasa może być abstrakcyjna mając zaimplementowane wszystkie metody. Czyli w teorii nie da się zrobić instancji ale wystarczy zrobić kolejną klasę bez abstract i rozszerzającą ją i beż żadnego dodatkowego kodu można stworzyć obiekt. Ale to raczej szczególne przypadki. - krzysiek050 2015-02-16 14:10
@krzysiek050, teraz rozumiem, ale trudno mi wyobrazić sobie sensowny przypadek dla czegoś takiego. - somekind 2015-02-16 14:13
@somekind, w Javie i w C# działa tak samo. Instancji nie utworzysz, ale kod z metody main (Main) i innych metod statycznych wykonasz. Ja też nie widzę sensownego powodu by dodać słowo abstract do definicji kompletnej klasy. Ciekaw jestem, czy jakiś program na świecie przestał by działać gdyby Microsoft (Oracle) zrobili z Math klasę abstract. Btw, kto tłumaczył tę https://msdn.microsoft.com/pl[...]ystem.math%28v=vs.110%29.aspx stronę? Statyczny element członkowski jest uroczy. - bogdans 2015-02-16 14:39
Może być przypadek że 1 klasa pochodna ma ileś tam metod zwykłych i 1 abstrakcyjną. Po niej dziedziczy X innych klas. W wyniku rozwoju oprogramowania da się stworzyć sensowną implementację wspólną dla nich wszystkich i zmieniamy tą metodę abstrakcyjną na zwykłą. Mamy wtedy klasę abstrakcyjną z pełną implementacją. Można by już usunąć modyfikator abstract, ale wiemy że w przyszłości dodamy jeszcze 2 metody abstrakcyjne i będzie trzeba to zmieniać z powrotem, a poza tym to jest nasza baza. Taki super rzadki przykład gdzie może to być użyteczne. - krzysiek050 2015-02-16 14:52
@bogdans, tłumaczył zapewne translator, sam się śmieję i denerwuję przez te tłumaczenia. W C# klasa abstrakcyjna nie może być jednocześnie statyczna, więc Microsoft niczego w ten sposób nie zepsuje. - somekind 2015-02-16 15:28

Pozostało 580 znaków

2015-02-16 10:00
2
  1. Klasy Abstrakcyjne
  2. Wyobraź sobie że masz klasę abstrakcyjną "Kolejka" i dziedziczące z niej "KolejkaNaLiście" i "KolejkaNaTablicy". Sama Kolejka nie definuje w jaki sposób przechowywać elementy, wiec siłą rzeczy nie jest ich w stanie przechowywać. W efekcie próba dodania czegoś do tej Kolejki skończyłaby się wysypaniem programu. Co wiecej, istnienie obiektu takiej klasy nie miałoby sensu bo nie mogłaby ona spełniać żadnej sensownej roli ;]

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-02-16 10:45
:-P
1

Inny przykład:

Klasa oznaczająca figurę - Shape. Sama klasa powiedzmy, że powinna mieć metodę do obliczania pola i obwodu figury. Niestety ze względu, że nie wiemy o którą figurę chodzi nie wiemy jak obliczyć pole, a tym samym obwód. Dopiero dziedzicząc z klasy Shape możemy wyprowadzić konkretne klasy i dla każdej z tych klas zdefiniować odpowiedni wzór do liczenia pola i obwodu.

Iście akademicki przykład :) - krzysiek050 2015-02-16 10:49

Pozostało 580 znaków

2015-02-16 14:20
0

Pytałam dość ogólnie, ale po przeczytaniu artykułu dot. CSS
http://www.kurshtml.edu.pl/cs[...]ktyki.html#klasa_abstrakcyjna

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0