CentrumXP.pl » Witamy
CentrumXP.pl
 
22 października 2009 - Premiera Microsoft Windows 7 - dowiedź się więcej w Portalu CentrumXP.pl...
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy byłbyś zainteresowany mobilną wersją Portalu CentrumXP.mobi dla komórek?

CentrumXP.pl » Microsoft .NET » Kurs C#, cz. I » Dodaj do ulubionych Dodaj do ulubionych   Dodaj do ulubionych Wersja do wydruku

20. Metody statyczne oraz metody instancyjne

Autor: Daniel Celeda    Opublikowano: 20 czerwca 2006    Odsłon: 21538    »Skomentuj...
Strona 1 z 1
Zobacz również:

01. "Programowanie" - z czym to się je?

02. Programowanie obiektowe

03. Do czego potrzebne jest nam Visual Studio 2005

04. Konfiguracja i obsługa C# 2005 Express Edition

05. Tworzenie solution i nowych projektów

06. Klasy i obiekty

07. Tworzenie oraz inicjalizacja obiektów

08. Operatory arytmetyczne

09. Porozmawiajmy o „stringach”

10. Typy proste i referencyjne

11. Wartości logiczne

12. Inne operatory logiczne

13. Instrukcje iteracyjne (tzw. pętle) - cz. I

14. Instrukcje iteracyjne (tzw. pętle) - cz. II

15. Tablice

16. Kolekcje

17. Typy generyczne (generics)

18. Przestrzenie nazw (namespaces)

19. Modyfikatory dostępu

»Uzyskaj pomoc na forum

Spotkaliśmy się już z obydwoma typami metod. Metodą statyczną jest np. „Main()”, natomiast

public void PrzypiszWartosc(string nowaWartosc)
{
   napis = nowaWartosc;
}

to metoda instancyjna. Metoda „PrzypiszWartosc(string nowaWartosc)” może być wykonana w ramach istniejącego obiektu. Np.

obiekt.PrzypiszWartosc("Przypisany tekst");

Metody statyczne nie wymagają aby wcześniej tworzyć instancje klas zwierających definicje tych metod. Dlatego „Main()” jest statyczna, ponieważ dzięki temu środowisko uruchomieniowe nie musi tworzyć obiektu aby program mógł zacząć działać. Przyjrzyjmy się przykładowi.

class KlasaPomocnicza
{
   public void Napisz()
   {
     System.Console.WriteLine("Metoda klasy KlasaPomocnicza");
   }
}
class KlasaGlowna
{
   static void Main()
   {
     KlasaPomocnicza.Napisz();
     System.Console.ReadLine();
   }
}

Ten program się nie skompiluje, ponieważ chcemy wywołać metodę niestatyczną bez stworzenia wcześniej obiektu klasy zawierającej definicję tej metody. Możemy ten błąd naprawić na dwa sposoby.
Pierwszy to stworzenie obiektu klasy „KlasaPomocnicza”.

class KlasaPomocnicza
{
   public void Napisz()
   {
     System.Console.WriteLine("Metoda klasy KlasaPomocnicza");
   }
}
class KlasaGlowna
{
   static void Main()
   {
     KlasaPomocnicza obiekt = new KlasaPomocnicza();
     obiekt.Napisz();
     System.Console.ReadLine();
   }
}

Drugi natomiast to zadeklarowanie metody „Napisz()” jako statycznej.

class KlasaPomocnicza
{
   public static void Napisz()
   {
     System.Console.WriteLine("Metoda klasy KlasaPomocnicza");
   }
}
class KlasaGlowna
{
   static void Main()
   {
     KlasaPomocnicza.Napisz();
     System.Console.ReadLine();
   }
}

A oto wynik:

Zmienne statyczne

Oprócz metod także zmienne mogą być statyczne. Różnią się one standardowych zmiennych tym, że są wspólne dla wszystkich obiektów klasy, w której znajdują się deklaracje owych zmiennych.
Najpierw przyjrzyjmy się programowi nie zawierającemu klas ze zmiennymi statycznymi.

class KlasaPomocnicza
{
   public string napis;
   public void Napisz()
   {
     System.Console.WriteLine(napis);
   }
}
class KlasaGlowna
{
   static void Main()
   {
     KlasaPomocnicza obiekt1 = new KlasaPomocnicza();
     KlasaPomocnicza obiekt2 = new KlasaPomocnicza();

     obiekt1.napis = "Czerwony";
     obiekt2.napis = "Zielony";

     obiekt1.Napisz();
     obiekt2.Napisz();

     System.Console.ReadLine();
   }
}

Tworzymy dwa obiekty klasy “KlasaPomocnicza”, następnie przypisujemy różne wartości zmiennym “napis” każdego z obiektów. Na koniec wypisujemy zawartość każdej ze zmiennych na ekran.
Wynik jest taki jakiego się spodziewamy.

Zmodyfikujmy nasz program tak aby wykorzystać zmienne statyczne.

class KlasaPomocnicza
{
   public static string napis;
   public void Napisz()
   {
     System.Console.WriteLine(napis);
   }
}
class KlasaGlowna
{
   static void Main()
   {
     KlasaPomocnicza obiekt1 = new KlasaPomocnicza();
     KlasaPomocnicza obiekt2 = new KlasaPomocnicza();

     KlasaPomocnicza.napis = "Czerwony";
     KlasaPomocnicza.napis = "Zielony";

     obiekt1.Napisz();
     obiekt2.Napisz();

     System.Console.ReadLine();
   }
}

Tym razem wartości przypisujemy dla klasy a nie dla obiektów. Wynik tym razem jest inny:



Aktualna ocena to: 2.41

Oceń artykuł...
Porażka Kiepski Taki Sobie Dobry Super!


Tagi:  

A teraz:    Dodaj do ulubionych Dodaj do ulubionych    Wydrukuj Wydrukuj    Wyślij link znajomemu Wyślij link znajomemu    Skomentuj Skomentuj

Komentarze do 20. Metody statyczne oraz metody instancyjne

Dodaj komentarz»

stały klient 13 czerwca 2006, 17:52

tzn nie będzie ona publikowana tutaj?

ad-4m 16 czerwca 2006, 21:18

mam nadzieję, że będzie to odcinek zbliżony raczej do pierwszych/środkowych, niż do ostatnich, w których to bardzo ważne i skomplikowane rzeczy są omawiane w sposób bardzo skrócony i niedokładnie. Kurs zaczął się na prawdę nieźle, ale im dalej w las tym absurdalnie mniej drzew - mniej wiadomości [tam gdzie właśnie są one potrzebne">. Gdybym nie znał C/C++ to większość tematów nadal byłaby mi nieznana.

hlehle 21 czerwca 2006, 2:49

Niestety niektóre tematy należało omówić, a że artykuły mają ograniczoną długość to efekt może czasami być nie do końca satysfakcjonujący. Może lepiej było zrezygnować z niektórych tematów, a dokładniej omówić pozostałe... Nigdy nie może być idealnie :)

m010ch 24 czerwca 2006, 22:04

Coś jest nie tak, bo wszystkie 3 screeny przedstawiają to samo, a conajmniej 2 ostatnie nie powinny :P I pytanko - czy to ostatnia część kursu? W ktorejś z pierwszych części znalazłem informacje, że kurs będzie miał właśnie 20 części - true or false?

Kuba 25 czerwca 2006, 1:15

true. Na dziś to jest koniec kursu, ale myślimy nad jego kontynuacją...

M4ciek 1 lipca 2006, 15:02

to są jakieś banały.... Dla kogoś, kto dopiera zaczyna programować w czym kolwiek raczej nie dla pr0 ;(

hlehle 3 lipca 2006, 22:43

m010ch: Faktycznie screeny są nie te co powinny. Może Kuba poprawi jak znajdzie czas :) M4ciek: To nie jest kurs dla "pro". Wydawało mi się, że jest to aż nadto jasne. Prowokacja jakaś czy co? :)))

Bad Ray 5 lipca 2006, 9:16

I tak to jest chyba najlepszy kurs w sieci podstaw c#, dzieki niemu przeszłem w niecały dzień z c++ do c#, no i dzieki temu moge czym szybciej zabrac sie do pisania engine 3d. Twórcom Dziękuje!

Ariel 6 lipca 2006, 13:10

Dziękuję twórcom kursu i proszę o jeszcze. :-)

Shreeve 27 lipca 2006, 9:34

W zasadzie, nie nauczyłem się nic nowego, ale jako przypomnienie... SUPER. Problem w tym, że MAŁO !! :D Napisane świetnym językiem, będę kurs polecał znajomym. Biorę się teraz za ASP.NET 2.0, SQL, i C# w praktyce. (z ASP jeszcze styczności nie miałem, więc liczę, że zrozumiem, chociaż na czym to polega). :) Pozdrawiam

dz1adek@wp.pl 4 sierpnia 2006, 15:22

czy ma ktos jescze jakis kurs c# po polsku? pozdro

Jaja 12 sierpnia 2006, 19:37

A czy wie ktos jak zrobic zmienna statyczna w C# ale nie w klasie tylko w funkcji????? Bo tak normalnie to to nie idzie: void FajnaFunkcja(costam cos) { static string t = "x"; .... } Czyzby nie bylo tak przydatnego elementu?

ZnowJaja 12 sierpnia 2006, 20:29

Juz wiem ze nie ma czegos takiego w C# i preferuje sie uzywanie zmiennych statycznych tylko w klasach. Google wszystko Ci powie. O ile dobrze zapytasz ;)

Burrek 18 sierpnia 2006, 17:05

Nic nie rozumiem z tego artykułu :(

Marek 13 czerwca 2007, 15:03

Chyba cos nie tak ze screenami jest.

zniesmaczony 9 lipca 2007, 21:06

Jak ktos zna c/c++ czy jave to sie nic nie dowie :(... ubogo

Trez 21 lipca 2007, 17:48

No i zakończyłem 1 cz. kursu. Serdecznie dziękuję autorowi. Faktycznie w ostatnich lekcjach była widoczna obniżka poziomu (od zdecydowanie najtrudniejszych lekcji 15 i 16). Teraz już wiem dużo więcej. Wiele się spodziewam po 2 części.

Mendoza 24 lipca 2007, 21:39

"Zniesmaczony" bo chyba bylo pisane we wstepie ze to kurs dla poczatkujacych. Jak sie zna c czy c++ to kurs moze pomoc tylko w zrozumieniu jak sie pisze w c#. Mi ten kurs wlasnie pomogl w tym zakresie. I tak jak porzednicy napisze rowniez, ze w koncowce kursu widac spadek poziomu.

Kot-ek 19 listopada 2007, 12:59

"Tworzymy dwa obiekty klasy “KlasaPomocnicza”, następnie przypisujemy różne wartości zmiennym “napis” każdego z obiektów. Na koniec wypisujemy zawartość każdej ze zmiennych na ekran. Wynik jest taki jakiego się spodziewamy." - chyba jednak nie do końca :P Nie te obrazki co trzeba zostały załączone do strony... (i zostało zauważone to już w czerwcu poprzedniego roku - że też administrator tej strony nic sobie z tego nie robi - ewentualnie twórca kursu)

adambart84 21 listopada 2007, 10:25

Zawsze można szybko sprawdzić działanie kodu (chwała za to twórcom kursu że wszystkie przykłady kompilują się i działają), ale wypadałoby aby screeny odpowiadały efektom wywołania kodu pokazanego jako przykład:/

michal 25 grudnia 2007, 20:04

zle zrzuty ekranu, nie z tego cwiczenia :P

Aleksander 17 lutego 2008, 9:01

Podsumowanie pierwszej części ująlbym w zdaniu-"Nierownomiernie rozłożony poziom trudnosci" ,ale...uważam że ten kurs(a przejrzałem ich wieeele) należy do jednych z nalepszych.Jednym z najlepszych dla początkujących:).Pogratulować pomyslu,upartości i dość dobrego poslugiwania sie językiem zrozumiałym dla wszystkich(no prawie). Z innej beczki ktoś ma żródła c# odnośnie sieci neuronowych?

Wojtek 26 lutego 2009, 9:02

Ostatnie 2 zrzuty ekranu mają sie nijak do podawanych przykładów !


Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2009 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plSklep on-line  |  Komputer w firmie  |  XboxSpot.pl  |  Live Blog  |  Jama MastahaDevelopers.pl