-
Halo #maciek
Czy ktos mógłby wyjaśnic mi sposób działania interfaców w Javie?? Wiem, że zastępuje ona klase abstrakcyjną i mówi co obiekt może a czego nie może. Ale co dalej? -
Anonim
Polimorfizm:)
Ogólnie możesz dziedziczyć tylko z jednej klasy, a interfejsów możesz implementować ile wlezie. Nie dokońca zastępuje klasę abstrakcyjną ponieważ, interfejs nie posiada pól, tylko same deklaracje metod(bez definicji).
Możesz stworzyć kilka klas implementujących dany interfejs i wywołać metody z tego właśnie interfejsu w jakiejś funkcji( przyjmującej za argument włąśnie klasę implementującą interfejs lub anonimową klasę wewnętrzną)
np.
interface IZwierze{
public void dajGlos();
}
class Kot implements IZwierze i{
public void dajGlos(){
System.out.println("miau");
}
}
class Pies implements IZwierze{
public void dajGlos(){
System.out.println("haaau");
}
}
public class Interfejsy{
public void wykonaj( IZwierze zwierze){
zwierze.dajGlos();
}
public static void main(String[] args){
wykonaj(new Kot());
wykonaj(new Pies());
wykonaj(new IZwierze(){
public void dajGlos(){
System.out.println("KWA KWA");
}});
}
}
Dobry zwyczaj zaczynać nazwę intefejsu od dużego I.
-
Scythe
>Dobry zwyczaj zaczynać nazwę intefejsu od dużego I.
Ciekawe dlaczego żaden z podstawowych interfejsów Javy jakoś tego nie przestrzega... Poproszę o link do powszechnie uznawanej strony, która uznaje zaczynanie nazw interfejsów od literki I. -
-
bartkiller
>Scythe napisał
>>Dobry zwyczaj zaczynać nazwę intefejsu od dużego I.
>
>Ciekawe dlaczego żaden z podstawowych interfejsów Javy
>jakoś tego nie przestrzega... Poproszę o link do
>powszechnie uznawanej strony, która uznaje zaczynanie nazw
>interfejsów od literki I.
msdn ?; P -
Scythe
1) link
2) bo jak wiemy Microsoft jest wykładnią Javowych standardów nazewnictwa
3) http://java.sun.com/docs/codeconv/h...
Ja wiem, że w C/C++/C# VS'owy Intellisense się gubi, że rozróżnianie atrybutów obiektów nie jest tak proste jak w Eclipse z Javą i konwencje m_*, C*, I*, etc. są przydatne. IMO w Javie nie ma to sensu - wciśnięcie jednego klawisza pozwala natychmiast dowiedzieć się, czy dana deklaracja dotyczy interfejsu czy klasy.
Zresztą, jak przytoczyłem w 3), oficjalne sunowskie konwencje nie mówią nic o IInterfejsach -
bartkiller
>Scythe napisał
>1) link
>2) bo jak wiemy Microsoft jest wykładnią Javowych
>standardów nazewnictwa
>3)
> http://java.sun.com/docs/codeconv/h...
>
>Ja wiem, że w C/C++/C# VS'owy Intellisense się gubi, że
>rozróżnianie atrybutów obiektów nie jest tak proste jak
>w Eclipse z Javą i konwencje m_*, C*, I*, etc. są
>przydatne. IMO w Javie nie ma to sensu - wciśnięcie
>jednego klawisza pozwala natychmiast dowiedzieć się, czy
>dana deklaracja dotyczy interfejsu czy klasy.
>Zresztą, jak przytoczyłem w 3), oficjalne sunowskie
>konwencje nie mówią nic o IInterfejsach
cieszę się, że zrozumiałeś mój zarcik.
Ale skoro tak się napaliłeś; ) (zwróć tym razem uwagę na powszechnie rozumiany w sieci emotikon z mrugnięciem, mam nadzieję, że się nie obrazisz) :
VS'owy Intellisens się nie "gubi" :-) w szczególności nie korzysta z przedrostków "I" i "C" - one są dla ludzi :-) Jedno kliknięcie to zawsze więcej niż jedno spojrzenie :-) -
Scythe
>bartkiller napisał
>cieszę się, że zrozumiałeś mój zarcik.
>Ale skoro tak się napaliłeś; ) (zwróć tym razem uwagę
>na powszechnie rozumiany w sieci emotikon z mrugnięciem,
>mam nadzieję, że się nie obrazisz) :
Spoko, nie obraziłem się. Gdybyś to napisał na serio a potem jeszcze się wykłócał mógłbym, w najgorszym wypadku, uznać Cię za idiotę;P Nie zauważyłem tego uśmieszku, to był długi dzień, a poza tym cośtam się ze spacjami w nim porobiło...
>VS'owy Intellisens się nie "gubi" :-)
Gubi gubi. Korzystałem z VS08 C++ i miał poważne problemy z odnajdywaniem pól w klasach nadrzędnych oraz wspomaganiem składni np. bibliotek boosta.
> w szczególności nie korzysta z przedrostków "I" i "C" - one są dla ludzi :-)
>Jedno kliknięcie to zawsze więcej niż jedno spojrzenie :-)
... niby tak, ale jak dla mnie literka I czy C zawsze była większym kłopotem niż zaletą. Wyszukiwanie (na liście plików wszystkie zaczynają się na C, jakoś dużo trudniej mi wtedy znaleźć to, co chcę) i otwieranie plików (np. ctrl-shift-r w Eclipse - zawsze trzeba zaczynać od C albo *, to jest wkurzające) jest przez to dużo bardziej problematyczne.
Druga sprawa: programując, przynajmniej mi, nie robi wielkiej różnicy czy korzysta się z Interfejsów czy Klas - tzn. ich obsługa jest dokładnie identyczna jeśli chodzi o wywoływanie metod. Więc byle nazwa była znacząca...
Swoją drogę pozdrawiam kolegę ze Staszica. Jakoś mi ten msdn od początku nie podpasował, ale mówię, miałem długi dzień. Dlatego pora już spać;)
Pozdrawiam! -
bartkiller
>Scythe napisał
>>bartkiller napisał
>>cieszę się, że zrozumiałeś mój zarcik.
>>Ale skoro tak się napaliłeś; ) (zwróć tym razem
>uwagę
>>na powszechnie rozumiany w sieci emotikon z mrugnięciem,
>>mam nadzieję, że się nie obrazisz) :
>
>Spoko, nie obraziłem się. Gdybyś to napisał na serio a
>potem jeszcze się wykłócał mógłbym, w najgorszym
>wypadku, uznać Cię za idiotę;P Nie zauważyłem tego
>uśmieszku, to był długi dzień, a poza tym cośtam się
>ze spacjami w nim porobiło...
>
>>VS'owy Intellisens się nie "gubi" :-)
>
>Gubi gubi. Korzystałem z VS08 C++ i miał poważne problemy
>z odnajdywaniem pól w klasach nadrzędnych oraz
>wspomaganiem składni np. bibliotek boosta.
>
>> w szczególności nie korzysta z przedrostków "I" i "C" -
>one są dla ludzi :-)
>>Jedno kliknięcie to zawsze więcej niż jedno spojrzenie
>:-)
>
>... niby tak, ale jak dla mnie literka I czy C zawsze była
>większym kłopotem niż zaletą. Wyszukiwanie (na liście
>plików wszystkie zaczynają się na C, jakoś dużo
>trudniej mi wtedy znaleźć to, co chcę) i otwieranie
>plików (np. ctrl-shift-r w Eclipse - zawsze trzeba
>zaczynać od C albo *, to jest wkurzające) jest przez to
>dużo bardziej problematyczne.
>
>Druga sprawa: programując, przynajmniej mi, nie robi
>wielkiej różnicy czy korzysta się z Interfejsów czy Klas
>- tzn. ich obsługa jest dokładnie identyczna jeśli chodzi
>o wywoływanie metod. Więc byle nazwa była znacząca...
>
>Swoją drogę pozdrawiam kolegę ze Staszica. Jakoś mi ten
>msdn od początku nie podpasował, ale mówię, miałem
>długi dzień. Dlatego pora już spać;)
>
>Pozdrawiam!
:-) Wporzo. Faktycznie jeśli chodzi o C++ to nawet 2008 rzeczywiście miewa problemy (ale też ponoć da się to doprowadzić do porządku). Ale 2010 beta wymiata, nawet z nową składnią dla funkcji lambda nie ma problemów :)
Też nie jestem fanem I i C - Twoje najświeższe argumenty są słuszne - standardowo przyjąłem pozycję adwersarza; -)
Też pozdrawiam :-) -
the_javu
Ponieważ ja również jestem przekorny:
http://wiki.eclipse.org/Naming_Conv...
Wiem, że dotyczy to jednego projektu, ale za to jakiego...
Osobiście i tak tej konwencji nie lubię i nie stosuję.
Podobne Tematy
|
|
Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test
Miejsca grona (1)
-
Kino Luna ul. Marszałkowska, Warszawa
www.kinoluna.pl kino.luna@maxfilm.com.pl 22 621 78 28
- Dodaj miejsce

