Przeciążan
ie
Przegląd zagadnień
Metody wirtualne
Przeciążanie metod
Klasy abstrakcyjne
Metody abstrakcyjne
Metody zamknięte
Podsumowanie
Pytania sprawdzające
Laboratorium
Metody wirtualne
Metody wirtualne – mogą mieć inne
implementacje
w klasach pochodnych
Prostokat
+ a : double
+ b : double
+ Pole() : double
class Prostokat
{
public double a;
public double b;
public
virtual
double Pole()
{
return a*b;
}
}
Przeciążanie metod
Zmiana implementacji dziedziczonej
metody to przeciążanie
Kwadrat
Prostokat
+ a : double
+ b : double
+ Pole() : double
+ Pole() : double
class Kwadrat : Prostokat
{
public
override
double Pole()
{
return a*a;
}
}
Klasy abstrakcyjne
Klasy abstrakcyjne mogą być tylko
dziedziczone,
nie mogą być instancjonowane
abstract
class Figura
{
public double x;
public double y;
public double Odleglosc()
{
return Math.Sqrt(x*x+y*y);
}
}
Figura f = new Figura();
Figura
+ x : double
+ y : double
+ Odleglosc() :
double
Metody abstrakcyjne (1)
Klasa pochodna musi przeciążyć
metody abstrakcyjne
Figura
+ x : double
+ y : double
+ Pole() : double
+ Odleglosc() :
double
class Prostokat : Figura
{
public double a;
public double b;
public
override
double Pole()
{
return a*b;
}
}
abstract class Figura
{
public double x;
public double y;
public
abstract
double Pole();
public double Odleglosc()
{
return Math.Sqrt(x*x+y*y);
}
}
Metody abstrakcyjne (2)
Metody abstrakcyjne
mogą być deklarowane
tylko w klasach abstrakcyjnych
Figura
+ x : double
+ y : double
+ Pole() : double
+ Odleglosc() :
double
Prostokat
+ a : double
+ b : double
+ Pole() : double
class Prostokat : Figura
{
public double a;
public double b;
public
override
double Pole()
{
return a*b;
}
}
Metody zamknięte
Metod zamkniętych nie można więcej
przeciążać
class Punkt : Figura
{
public
sealed override
double Pole()
{
return 0;
}
}
Podsumowanie
Metody wirtualne (virtual) mogą być
modyfikowane
w klasach pochodnych
Zmiana dziedziczonej metody to
przeciążanie (override)
Klasa abstrakcyjna (abstract)
nie może być instancjonowana
może być tylko dziedziczona
Metoda abstrakcyjna musi być przeciążona
w klasie pochodnej
Zamknięcie przeciążonej metody (sealed)
uniemożliwia jej przeciążanie w klasach
pochodnych
Pytania sprawdzające
Czym są metody wirtualne i na czym
polega ich przeciążanie?
Czym jest klasa abstrakcyjna?
Czym jest metoda abstrakcyjna?
Laboratorium