1. Wprowadzenie do C#
  2. Szybki start
  3. Pierwszy program
  4. Komentarze
  5. Typy danych
  6. Zmienne
  7. Pola
  8. Właściwości
  9. Stałe
  10. Metody
  11. Instrukcje warunkowe
  12. Pętle
  13. Tablice
  14. Kolekcje
  15. Klasy
  16. Dziedziczenie
  17. Polimorfizm
  18. Konwersja typów
  19. Właściwości klasy String
  20. Typy wyliczeniowe
  21. Interfejsy
  22. Klasy statyczne
  23. Klasy Abstrakcyjne
  24. Przestrzenie nazw
  25. Wyjątki
  26. Typy generyczne
  27. Typy generyczne
  28. JSON
  29. XML
  30. Podsumowanie

Klasa bazowa i pochodna

Klasa bazowa (również zwana klasą podstawową lub nadrzędną) jest klasą, z której inne klasy mogą dziedziczyć. Klasa bazowa zawiera pola i metody, które są dziedziczone przez klasy pochodne.

Klasa pochodna (również zwana klasą pochodną lub podrzędną) jest klasą, która dziedziczy z klasy bazowej. Klasa pochodna dziedziczy wszystkie pola i metody klasy bazowej oraz może mieć swoje własne pola i metody oraz nadpisywać już istniejące.

Dziedziczenie w języku C# pozwala na tworzenie nowych klas bazujących na już istniejących klasach. Klasa pochodna (dziedzicząca) dziedziczy wszystkie pola i metody klasy bazowej (którą dziedziczy) oraz może dodać swoje własne składowe oraz nadpisać już istniejące.

				
class Bazowa
{
    // składowe i metody klasy Bazowa
}

class Dziedziczaca : Bazowa
{
    // składowe i metody klasy Dziedziczącej
}
				
			

Klasa Dziedziczaca ma dostęp do wszystkich składowych publicznych i chronionych klasy bazowej, oraz może nadpisywać metody bazowej, używając słowa kluczowego override .

				
using System;

class Program
{
    static void Main(string[] args)
    {
        Samochod samochod = new Samochod("Mazda", 4, 2); // Tworzy instancję klasy Samochod

        samochod.Jedz(); // Wywołuje metodę Jedz() dla samochodu
    }

    // Klasa Pojazd
    class Pojazd
    {
        protected string marka; // Pole przechowujące markę pojazdu
        protected int iloscKol; // Pole przechowujące ilość kół pojazdu

        // Konstruktor klasy Pojazd
        public Pojazd(string marka, int iloscKol)
        {
            this.marka = marka;
            this.iloscKol = iloscKol;
        }

        // Wirtualna metoda Jedz()
        public virtual void Jedz()
        {
            Console.WriteLine("Jedzie pojazd marki " + marka + " z " + iloscKol + " kołami.");
        }
    }

    // Klasa Samochod dziedzicząca po klasie Pojazd
    class Samochod : Pojazd
    {
        private int liczbaDrzwi; // Pole przechowujące ilość drzwi samochodu

        // Konstruktor klasy Samochod
        public Samochod(string marka, int iloscKol, int liczbaDrzwi) : base(marka, iloscKol)
        {
            this.liczbaDrzwi = liczbaDrzwi;
        }

        // Przesłonięta metoda Jedz()
        public override void Jedz()
        {
            Console.WriteLine("Jedzie samochód marki " + marka + " z " + iloscKol + " kołami i " + liczbaDrzwi + " drzwiami.");
        }
    }
}