Files
ObiektowaTeoria/abstrakcja_interfejsy.cs
2026-07-16 12:19:17 +02:00

54 lines
1.7 KiB
C#

namespace ObiektowaTeoria
{
// Klasa abstrakcyjna - a, która nie może być bezpośrednio
// zainstancjonowana (nie można tworzyć jej obiektów). Deklaruje się
// ją za pomocą słowa kluczowego za pomocą "abstract". Może zawierać zarówno
// metody abstrakcyjne (bez implementacji), jak i metody z implementacją.
// Służy jako szablon dla klas dziedziczących, zapewniając wspólny interfejs i
// bazową funkcjonalność. Klasy dziedziczące muszą implementować wszystkie metody
// abstrakcyjne.
public abstract class Figura
{
public abstract double Pole();
}
// Klasa dziedzicząca implementująca abstrakcyjną metodę
public class Kwadrat : Figura
{
public double Bok;
public Kwadrat(double bok)
{
Bok = bok;
}
public override double Pole()
{
return Bok * Bok;
}
}
// Interfejs - czysty kontrakt, który definiuje metody i właściwości, ale nie zawiera ich implementacji.
// Definiuje się go za pomocą słowa kluczowego interface. Klasy implementujące interfejs muszą dostarczyć implementację
// wszystkich jego metod. Pozwala na tworzenie luźno powiązanych komponentów i ułatwia wielodziedziczenie zachowań.
public interface IRysowalny
{
void Rysuj();
}
// Klasa implementująca interfejs
public class Kolo : IRysowalny
{
public double Promien;
public Kolo(double promien)
{
Promien = promien;
}
public void Rysuj()
{
Console.WriteLine("Rysuję koło o promieniu " + Promien);
}
}
}