––> Polimorfizam predstavlja sposobnost promenljive da referencira objekte različitih tipova i da automatski poziva odgovarajuću metodu objekta koji referencira.

// Polimorfizam se zasniva na ideji da metoda koja je deklarisana u osnovnoj klasi može da se implementira na više različitih načina u različitim izvedenim klasama.

Polimorfizam se realizuje preko virtualnih metoda

- za deklaraciju virtuelnih metoda se koristi ključna reč virtual.
- virtualne metode se mogu reimplementirati u izvedenim klasama (kod njih se koristi ključna reč override).

.

Polimorfizam omogućava da se pozove metoda izvedene klase preko objekta osnovne klase u toku izvršavanja programa. Ovo je zgodno kada je potrebno raditi sa grupom objekata. Ako su ti objekti izvedeni iz jedne osnovne klase onda je moguće kreirati niz objekata osnovne klase, a pojedinim elementima tog niza dodeljivati konkretne objekte izvedenih klasa. Ako sve izvedene klase imaju istu metodu (funkciju), pozivanje tog metoda će biti jednostavno i uvek će se pozvati odgovarajući metod.

Kod polimorfizma se koriste ključne reči virtual i override.

virtual - koristi se kako bi se metoda osnovne klase mogla predefinisati u izvedenoj klasi.

override - koristi se u izvedenoj klasi kako bi se ta ista metoda proglasila metodom koja prepisuje virtualnu metodu iz osnovne klase.

Virtuelna i reimplementirana (overrajdovana Mr. Green) metoda moraju biti identične, tj. moraju imati:
Exclamation isti naziv,
Exclamation isti modifikator pristupa,
Exclamation isti tip rezultata,
Exclamation iste tipove parametara.

Primer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication
{
    class Kompleksni
    {
        private double re;
        private double im;
 
        public Kompleksni()
        {
            re = 0;
            im = 0;
        }
 
        public Kompleksni(double realni, double imaginarni)
        {
            re = realni;
            im = imaginarni;
        }
 
        public override string ToString()
        {
            string temp;
            if (im > 0)
                temp = re + "+" + im + "i";
            else
                temp = re + "" + im + "i";
            return temp;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Kompleksni Z1 = new Kompleksni(4, -5);
            Console.WriteLine("Z1 = {0}", Z1);
 
            Kompleksni Z2 = new Kompleksni(2, 6);
            Console.WriteLine("Z2 = {0}", Z2);
        }
    }
}


REZULTAT --> poziva se reimplementirana metoda 
(pozvaće se metoda klase čijeg je tipa promenljiva)

Ukoliko ne želimo da drugi programeri, nasleđjuju neku od klasa, koje smo napravili
--> to možemo učiniti pomoću ključne reči sealed , a takve klase se nazivaju zapečaćene klase.

Zapečaćena (sealed) klasa ne može da se koristi kao bazna klasa bilo koje druge klase.

Sintaksa:

  1. public sealed class ZapecacenaKlasa
  2.     {
  3.         //...
  4.     }

Last modified: Monday, 25 January 2021, 10:21 AM