Statyczne klasy

0

Witam!

Mam do was teoretyczne pytanko : " Czy klasy mogą być statyczne ? ".

Pytam ponieważ gdy tworzę nową klasę , to nie mogę jej zadeklarować jako static.

Natomiast gdy w tej klasie definiuję inna klasę to ta nowo zdefiniowana może być statyczna.

Więc czy to pytanie jest niejednoznaczne ?

0

Co wg Ciebie miałoby znaczyć, że klasa jest static? Static (wspólna dla wszystkich instancji) może być składowa klasy, jak definiujesz klasę wewnątrz klasy, to słowo static oznacza, że ta klasa wewnętrzna jest składową static klasy "zewnętrznej".

0

Klasy wewnętrzne mogą być statyczne, natomiast te zwykłe nie.

Swoją drogą to widać, że nie czytałaś za bardzo o tym czym jest static, co robi, po co się stosuje itd.

Po prostu nie ma sensu tworzyć statycznej klasy.

Nie wiem po co Ci statyczne klasa, ale jak już się upierasz to wszystkie pola i metody w tej klasie oznacz jako static, później z tej klasy nie twórz obiektóe tylko odwołuj się do niej przez nazwę klasy.

np.:
NazwaKlasy.metoda();

a nie

NazwaKlasy obiekt = new NazwaKlasy();
obiekt.metoda();

bo to wyjdzie na to samo ;)

Opisz może lepiej co robisz, to Ci poradzę jak to powinno się wykonać.

Edit: bo ubiegłeś mnie

0

Słówko static w Javie ma akurat w tym przypadku inne znaczenie. W zasadzie nieintuicyjne i być może źle dobrane. Instancja klasy wewnętrznej niestatycznej ma implicite wskaźnik do klasy zewnętrznej, instancja klasya wewnętrznej statycznej nie ma takiego wskaźnika (no chyba że sam dodasz). Instancja klasy wewnętrznej niestatycznej nie utworzysz więc nie mając instancji klasy zewnętrznej, a instancję klasy wewnętrznej statycznej tak. Inaczej mówiąc, klasa wewnętrzna statyczna to w rzeczywistości odrębna klasa i prawie taki sam efekt uzyskałbyś, gdybyś umieścił tą klasę poza klasą zewnętrzną. Jedyną różnicą w tym przypadku byłaby widoczność pól prywatnych. Klasa zewnętrzna ma dostęp do pól prywatnych klasy wewnętrznej, obojętne czy statycznej czy niestatycznej.

0

Dzięki wielkie "Wibowit". O to mi chodziło!

Pytałem , ponieważ według mojego wykładowcy z PO klasy nie mogą być statyczne.
Taki przykład pokazuje ,że jednak mogą :P .

0

Być może chodziło mu o statyczność innego rodzaju, tego najszerzej rozumianego. Wtedy miałby rację. A tak to po prostu został zwiedziony przez kiepsko dobrane słówko kluczowe, podobnie jak koledzy powyżej :)

0

A moze kolega autor uzywal wczesniej C# i chce jednak klasy statyczne takie jak tam sa (wszystkie metody statyczne, nie mozna tworzyc instancji z new, ...)? Jesli tak, to niestety, w Javie takiego czegos nie ma.

0
Wibowit napisał(a)

Klasa zewnętrzna ma dostęp do pól prywatnych klasy wewnętrznej

A nie na odwrot?

0

'Niestety' powiedzialem nie w sensie ze mi tego brakuje, tylko tak po prostu jak sie mowi 'niestety'.
Poza tym to nie do konca to samo. Poczytaj o tym w .net.

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