CentrumXP.pl » Witamy
CentrumXP.pl
 
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy zamierzasz pobrać Internet Explorer 9?


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

08. Porozmawiajmy o klasach

Autor: Paweł Kruczkowski    Opublikowano: 14 listopada 2006    Odsłon: 56023    »Skomentuj...
Strona:
Zobacz również:

01. Zmienne, stałe, wyrażenia i odstępy w C# 2.0

02. Usuwanie obiektów

03. Przekazywanie parametrów

04. Przeciążanie metod i konstruktorów

05. Hermetyzacja danych

06. Dziedziczenie i polimorfizm

07. Abstrakcja w C#

09. Struktury

10. Interfejsy, część 1

11. Interfejsy, część 2

12. Słowniki w C# 2.0

13. Łańcuchy w C# 2.0

14. Wyrażenia regularne

15. Wyjątki - część I

16. Wyjątki - część II

17. Delegaty i zdarzenia

18. Operacje wejścia - wyjścia cz.1

19. Operacje wejścia - wyjścia cz. 2

20. Atrybuty i mechanizm refleksji

»Uzyskaj pomoc na forum

W dzisiejszym artykule będziemy kontynuować temat klas w języku C# 2.0. Na łamach portalu CentrumXP zostało już o nich bardzo wiele napisane i każdy z nas potrafi prawidłowo zdefiniować pojęcie klasy jak i bez żadnego problemu ją zaimplementować w swoim programie.

Dzisiaj powiemy sobie jeszcze o klasach zamkniętych, klasie Object oraz samym mechanizmie zagnieżdżania klas.

Tydzień temu poznaliśmy sposób definiowania oraz stosowania klas abstrakcyjnych. Jak pamiętamy, są to klasy, które stanowią w pewnym sensie kontrakt dla klas pochodnych, które dziedziczą właśnie klasę abstrakcyjną. Innymi słowy, klasa abstrakcyjna opisuje publiczne metody klas pochodnych. Nie jest przypadkiem, że o tych klasach w tym miejscu wspominamy, ponieważ ich przeciwieństwem są tzw. klasy zamknięte. Klasy te charakteryzują się tym, że od nich nie można w ogóle tworzyć klas pochodnych (w przeciwieństwie do klas abstrakcyjnych). Napiszmy na początek prosty programik, w którym użyjemy klasy abstrakcyjnej:

abstract public class Figura
{
    protected double e, f;
 
    public Figura(double e, double f)
    {
        this.e = e;
        this.f = f;
    }
    abstract public void Komunikat();
}
 
class Romb : Figura
{
    public Romb(double e, double f) : base(e, f)
    { }
 
    public override void Komunikat()
    {
        System.Console.WriteLine("Program obliczający pole rombu.");
    }
 
    public double ObliczPole()
    {
        return (e * f) / 2;
    }
}
 
class Glowna
{
    static void Main(string[] args)
    {
        Romb r = new Romb(6, 8);
        double wynik = r.ObliczPole();
 
        r.Komunikat();
        System.Console.WriteLine("Pole naszego rombu wynosi: {0}", wynik +".");
    }
}

W powyższym przykładzie abstrakcyjna klasa Figura definiuje publiczną metodę Komunikat(), która z kolei jest przesłonięta w klasie Romb wg poznanych już przez nas zasad. A więc mechanizm dziedziczenia i polimorfizmu jest w jak najlepszym stopniu prawidłowo zastosowany, dlatego też po skompilowaniu i uruchomieniu powyższego kodu otrzymamy następujące wyniki:


1 2 3 4 5 6 7 Dalej» 

Aktualna ocena to: 4,06

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 08. Porozmawiajmy o klasach

Dodaj komentarz»

tom 22 października 2007, 14:29

kurs świetny, ale.... :) nie ma sensu wywoływać metody ToString, gdy chcemy wyświetlić opis obiektu np. metodą WriteLine, tak jak to miało miejsce tutaj: System.Console.WriteLine("{0}", k.ToString()); Metoda ToString została wprowadzona właśnie po to, aby można było w takim kontekście użyć samego obiektu, o tak: System.Console.WriteLine("{0}", k); Drugą rzeczą, do ktorej moza sie przyczepić jest wywolanie metody ToString dla obiektów klasy string, w tym przypadku dla kolor1 i kolor2: k.kolor1.ToString(); poza tymi drobnymi bledami w tej czesci kursu, jako całość jest idealny, zwłaszcza dla początkujących. pozdrawiam autorów.

frizik 22 lutego 2009, 12:57

nie można zrobić czegoś takiego:
 
[size= 10pt; font-family: "Courier New"; color: blue">class[/size">[size= 10pt; font-family: "Courier New""> [color=teal">Druga[/color"> : Pierwsza [/size"><br /><br /><br />[size= 10pt; font-family: "Courier New"">{[/size"><br /><br /><br />[size= 10pt; font-family: "Courier New"">   [/size">[color=teal">Console[/color">.WriteLine([color=maroon">"Niedozwolone dziedziczenie!"[/color">);
<br /><br /><br />[size= 10pt; font-family: "Courier New"">}[/size">



Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2012 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plXboxSpot.pl  |  Jama Mastaha