• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Co daje dziedziczenie

Object Storage Arubacloud
0 głosów
620 wizyt
pytanie zadane 26 kwietnia 2015 w Java przez rubesom Obywatel (1,690 p.)
Hej

Przerobiłem już kilka poradników na temat, javy ale dalej nie rozumiem, po co jest dziedziczenie.

Myślałem, że dzięki dziedziczeniu mogę używać w podklasie metod z nad klasy, ale:

-do pól dostane się za pomocą akcesrów i mutatorów

-do metod dostane się za pomocą konstrukcji kodu: "nazwa obiektu"."nazwa metody"

Stąd moje pytanie, co mi da dziedziczenie, do czego jest mi ono potrzebne a co najważniejsze, czego bez dziedziczenia nie zrobię w kodzie?

6 odpowiedzi

+1 głos
odpowiedź 26 kwietnia 2015 przez Do.Zzay Mądrala (5,700 p.)
Tworząc ojca, z którego dziedziczy wiele klas podobych do siebie, będziesz miał mniej pracy. Np: Ssak(jedz(), pij() ) Dziedzic, czyli np. Pies (te same co ssak, ponadto możesz dodać własne np. szczekaj() ) Zaoszczędzasz wiele linijek kodu, najlepiej wytłumaczył to Pan Zelent w kursie obiektowego C++ (mimo to że programujesz w Java, polecam się zapoznać).
komentarz 26 kwietnia 2015 przez rubesom Obywatel (1,690 p.)
Jak skomentowałem wyżej - rozumiem założenia dziedziczenia, ale, po co mam np. w pod klasie używać słówka "extend" skoro mam dostęp do wszystkiego bez niego?
komentarz 26 kwietnia 2015 przez Boshi VIP (100,240 p.)
Nie rozumiesz w ogóle ideii dziedziczenia...
Klasa głowna jest często klasą abstrakcyjną z metodami abstrakcyjnymi, ją się dziedziczy po to by  przesłaonić metody klasy abstrakcyjnej i wypworwadzić swoje zachowania->polimorfizm.

Jeżeli chcesz dodać np bohatera do swojej gry to co lepiej? stworzyć od nowa calutką klasę z milionem atrybutów, milionem metod  czy rozszerzyć klasę bohater i dodać przeładowaną metodę atakuj ? a atrybuty są wszystkie z nad klasy? i tylko dodajesz te co potrzeba?
0 głosów
odpowiedź 26 kwietnia 2015 przez Ehlert Ekspert (212,670 p.)
Masz zdefiniowaną paśną klasę obiektu 3D. teraz chcesz zrobić taką samą ale z dodatkowymi metodami i cechami np. Hero. Wiec Hero dziedziczy z 3D. dzięki temu nie musisz przepisywać 3D drugi raz.
komentarz 26 kwietnia 2015 przez rubesom Obywatel (1,690 p.)
Samo założenie dziedziczenia rozumiem, ale:

Czyli samo tworzenie akcesorów, mutatorów jest dziedziczeniem?

Ale, po co mam używać słówka extend skoro jak napisałem wyżej mam dostęp do wszystkiego bez używania tego słówka?
komentarz 26 kwietnia 2015 przez Ehlert Ekspert (212,670 p.)
Widzę ze nie rozumiesz idei dziedziczenia. Mogę odesłać tylko do kursu Pana Zelenta. W Javie to to samo tylko jest jeden rodzic i klasy abstrakcyjne których instancji nie wywołasz.
0 głosów
odpowiedź 26 kwietnia 2015 przez kotfuterkowy Dyskutant (9,220 p.)
edycja 26 kwietnia 2015 przez kotfuterkowy
Polecam poczytać tutorial Xiona "Od zera do gier kodera" (rozdział o dziedziczeniu) - co prawda dotyczny C++, ale świetnie wyjaśnia, czym jest dziedziczenie i po co się go stosuje. Znajdziesz go tutaj:

http://xion.org.pl/productions/texts/coding/megatutorial/

Lepiej bym tego nie wyjaśnił.
0 głosów
odpowiedź 26 kwietnia 2015 przez rubesom Obywatel (1,690 p.)

Mam teraz pytania odnośnie tego kodu:

public class Zwierze 
{

	private String imie;
	private String waga;
	
	public String getImie()
	{
		return imie;
	}
	
	void glos()
	{
		System.out.println("odglos");
	}
	
	
}


public class KotTest 
{

	public static void main(String[] args) 
	{

		Zwierze zwierze = new Zwierze();
		zwierze.glos();
		System.out.println(zwierze.getImie());
	}

}

1. Czy to jest już dziedziczenie? Chodzi mi o to, że klasa "KotTest" używa metody i pola z innej klasy.

2. Hierarchia i extends... Po co używa się słówka extends w dziedziczeniu? Tylko po to, żeby kod był bardziej czytelny i widoczna była hierarchia czy po coś innego jeszcze?

2b. Najważniejsze, z tego zrodził się ten temat. Myślałem, że słówko extends służy do zrobienia widzialnymi pul private dla innych klas i tak samo z metodami a tak się nie dzieje. Po co używać słówka extends?

komentarz 27 kwietnia 2015 przez Boshi VIP (100,240 p.)
Weź przeczytaj jakiś podstawowy kurs, bo nie masz zielonego pojęcia co to jest obiektowość.  W tym kodzie tworzysz obiekt klasy zwierze w klasie kottest i wywołujesz jego metodę..

jak byś dziedziczył to byś zrobił klasę kottest extend zwierze i w niej wywołał  metodę glos...
0 głosów
odpowiedź 1 maja 2015 przez Czeslow Obywatel (1,220 p.)

Podobnie jak kolega Boshi napisał musisz ogarnąć obiektowość w programowaniu. Co do słówka extends, to oznacza ono z języka angielskiego rozbudować, rozszerzać. Daje to naprawdę duże możliwości, jak np. dodanie dodatkowej funkcji do istniejącej klasy czy po prostu dopisanie jakiejś zmiennej. Warto korzystać z gotowych rozwiązań, ponieważ jest to niesamowita oszczędność czasu.

Przykładowo, dzięki dziedziczeniu w aplikacji, którą pisałem na androida (to jest nadal Java), mogłem rozbudować klasę ArrayAdapter - http://developer.android.com/reference/android/widget/ArrayAdapter.html używaną w ListView - http://developer.android.com/guide/topics/ui/layout/listview.html. Dzięki takiej operacji mogłem dodać do listy kolejne teksty, obrazki, przyciski etc. oraz ustawić je jak mi się żywnie podoba. Jeśli miałbym pisać taką listę z adapterem na nowo zajęło by mi to wiele kolejnych godzin.

–1 głos
odpowiedź 26 kwietnia 2015 przez Boshi VIP (100,240 p.)
Skrócna kod o kilka set razy licząc w procentach... zamiast pisać 10x to samo, piszesz raz.

Podobne pytania

+1 głos
2 odpowiedzi 2,718 wizyt
pytanie zadane 12 maja 2015 w Java przez rubesom Obywatel (1,690 p.)
0 głosów
3 odpowiedzi 1,629 wizyt
pytanie zadane 10 maja 2015 w Java przez rubesom Obywatel (1,690 p.)
0 głosów
2 odpowiedzi 585 wizyt
pytanie zadane 14 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...