programowanie obiektowe 05

background image

Przeciążan

ie

background image

Przegląd zagadnień

Metody wirtualne
Przeciążanie metod
Klasy abstrakcyjne
Metody abstrakcyjne
Metody zamknięte
Podsumowanie
Pytania sprawdzające
Laboratorium

background image

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;

}

}

background image

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;

}

}

background image

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

background image

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);

}

}

background image

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;

}

}

background image

Metody zamknięte

Metod zamkniętych nie można więcej

przeciążać

class Punkt : Figura
{

public

sealed override

double Pole()

{

return 0;

}

}

background image

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

background image

Pytania sprawdzające

Czym są metody wirtualne i na czym

polega ich przeciążanie?
Czym jest klasa abstrakcyjna?
Czym jest metoda abstrakcyjna?

background image

Laboratorium


Document Outline


Wyszukiwarka

Podobne podstrony:
programowanie obiektowe 05, c c++, c#
Programowanie obiektowe(ćw) 1
Zadanie projekt przychodnia lekarska, Programowanie obiektowe
Programowanie obiektowe w PHP4 i PHP5 11 2005
Programowanie Obiektowe ZadTest Nieznany
Egzamin Programowanie Obiektowe Głowacki, Programowanie Obiektowe
Jezyk C Efektywne programowanie obiektowe cpefpo
Programowanie Obiektowe Ćwiczenia 5
Programowanie obiektowe(cw) 2 i Nieznany
Intuicyjne podstawy programowania obiektowego0
Programowanie obiektowe, CPP program, 1
wyklad5.cpp, JAVA jest językiem programowania obiektowego
projekt01, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
przeciazanie metod i operatorow, Programowanie obiektowe
projekt06, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
projekt07, wisisz, wydzial informatyki, studia zaoczne inzynierskie, programowanie obiektowe, projek
Programowanie Obiektowe Cz2, Dziedziczenie proste
Programowanie obiektowe, w2, 2

więcej podobnych podstron