![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Witam,
jaka jest pomiędzy nimi różnica i czym dokładniej są klasy/metody abstrakcyjne ? Może źle rozumiem, ale mi się wydaje, że interface służy do deklarowania zmiennych i metod, które MUSZĄ znaleźć się w klasie, która implementuje dany interfejs. A abstract ? Czytałem już kilka powiedzmy porównań znalezionych w internecie, czytam też Vademecum Profesjonalisty Cz. 4. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Bardzo dobrze rozumiesz, jaka różnica?
Nie piszesz ciała funkcji a jedynie zaznaczasz, że taka będzie i np. przyjmie 2 parametry. W klasach abstrakcyjnych możesz za to napisać i w klasie dziedziczącej nadpisać metodę lub użyć o ile modyfikatory dostępu na to pozwalają. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Nadpisać tzn jak ?
Jak np mogą pozwalać na to modyfikatory dostępu ? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie nadpisać a napisać
a
O ile się nie mylę ![]() co do modyfikatorów:
Ten post edytował kpt_lucek 7.05.2012, 12:49:13 -------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. http://docs.oracle.com/javase/tutorial/jav...epts/index.html
2. http://docs.oracle.com/javase/tutorial/java/IandI/index.html Co prawda do Javy, ale w ~90% pokrywa się, zresztą tutaj jest jedynie wstęp do obiektówki, nie języka. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Interfejs to swego rodzaju wzorzec dla klas. Zadaniem interfejsu jest dostarczenie użytkownikowi informacji na temat tego, jakie publiczne metody (i tylko metody) musi zaimplementować w klasie bazującej na danym interfejsie.
Klasa abstrakcyjna reprezentuję szeroką grupę różnego rodzaju obiektów, które łączy tylko kilka wspólnych cech. Dobrym przykładem mogą być figury matematyczne, do których zaliczamy np. koło, kwadrat, czy trójkąt. Klasy ogólnej FiguraMatematyczna nie jesteśmy w stanie zdefiniować, wiemy jedynie, że "jednoczy" ona wszystkie figury, które mają określoną definicję. Co więcej dla każdej z tych figur możemy zdefiniować ogólne metody, których zadaniem będzie np. policzenie obwodu, czy pola. Będą to oczywiście metody abstrakcyjne, ponieważ obwód i pole prawie zawsze obliczamy inaczej. Trochę kodu:
Oczywiście to tylko przykład, któremu z matematycznego punktu widzenia duuuuuuużo brakuje ![]() Edycja: Klasa abstrakcyjna to taka, dla której nie możemy utworzyć instancji obiektu, bo nie miałoby to sensu, tzn. byłby to obiekt, który nie określałby na tyle szczegółowo właściwości interesującej nas "rzeczy", abyśmy mogli tę rzecz dokładnie zidentyfikować. Ten post edytował mortus 7.05.2012, 13:12:33 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Interfejs to jakby "pusta klasa", w której deklarujesz jakie metody muszą być zdefiniowane w klasie która go implementuje. Klasa abstrakcyjna to klasa gdzie oprócz "normalnych" metod, możesz zadeklarować metody abstrakcyjne, które muszą być zaimplementowane w klasie która po niej dziedziczy.
http://stackoverflow.com/questions/1913098...-abstract-class -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 11:33 |