I deo – DEFINICIJA IZVEDENE KLASE

U dosadašnjem radu učenici su se upoznali sa pojmom klase i objekta. Naučili su da klasa predstavlja model ili šablon, dok je objekat konkretna realizacija tog šablona. Međutim, u realnim programima često imamo više klasa koje su međusobno povezane i koje dele zajedničke osobine.

Da bismo izbegli ponavljanje istog koda, koristimo jedan od osnovnih principa objektno orijentisanog programiranja – nasleđivanje.


1. Šta je nasleđivanje?

Nasleđivanje omogućava da jedna klasa preuzme (nasledi) osobine i ponašanja druge klase.

  • Bazna (osnovna) klasa – klasa od koje se nasleđuje

  • Izvedena klasa – klasa koja nasleđuje

Na ovaj način smanjujemo količinu koda, program je pregledniji i lakše se održava i proširuje.


2. Primer iz stvarnog života

Posmatrajmo sledeću situaciju:

Svaka osoba ima ime i prezime.

Učenik je osoba, ali dodatno ima razred i odeljenje

👉 Učenik JE osoba, ali ima dodatne osobine.


3. Definicija bazne klase

Prvo ćemo da napravimo Console Application  i u njoj da kreiramo klasu Osoba:

 class Osoba
{
    public string Ime;
    public string Prezime;

    public void PredstaviSe()
    {
        Console.WriteLine("Ja sam " + Ime + " " + Prezime);
    }
}
 

Ova klasa opisuje svaku osobu.


4. Definicija izvedene klase

Izvedena klasa se definiše pomoću znaka : (dvotačka) a zatim sledi ime osnovne klase iz koje je izvedena.

 class Ucenik : Osoba
{
    public int Razred;
}
 

 Klasa Ucenik:

  • AUTOMATSKI dobija Ime

  • AUTOMATSKI dobija Prezime

  • AUTOMATSKI dobija metodu PredstaviSe()


5. Hijerarhija klasa

Grupa klasa koje su povezane nasleđivanjem formiraju strukturu koja se naziva hijerarhija klasa.

Osoba
  |
  └── Ucenik

Izvedena klasa nasleđuje sve članove bazne klase.
  -- bazna klasa je super klasa ili nadređena klasa.
  -- izvedena klasa je podklasa ili podređena klasa (klasa koja nasleđuje baznu klasu). 

- Jednu baznu klasu može da nasledi više izvedenih klasa (broj izvedenih klasa je neograničen).

Izvedena klasa nasleđuje sve osim konstruktora i destruktora bazne klase. Exclamation 


Zadatak 1:  Napraviti baznu klasu Vozilo sa atributima Marka i Brzina.

Zadatak 2: Napraviti izvedenu klasu Automobil koja ima atribut BrojVrata.

 class Vozilo
{
    public string Marka;
    public int Brzina;
}

class Automobil : Vozilo
{
    public int BrojVrata;
}
 

II deo – UPOTREBA ČLANOVA IZVEDENE KLASE


1. Korišćenje nasleđenih članova

Izvedena klasa može da koristi atribute i metode koje su definisane u baznoj klasi.

2. Primer korišćenja objekta izvedene klase
static void Main(string[] args)
{
    Ucenik u = new Ucenik();

    u.Ime = "Marko";
    u.Prezime = "Marković";
    u.Razred = 3;

    u.PredstaviSe();
    Console.WriteLine("Razred: " + u.Razred);

    Console.ReadLine();
}

👉 Iako Ime i Prezime nisu definisani u klasi Ucenik, mogu se koristiti jer su nasleđeni.


3. Pristupni modifikatori (kratko objašnjenje)

  • public – dostupno svuda

  • private – dostupno samo u istoj klasi

  • protected – dostupno u izvedenim klasama

Primer:

class Osoba
{
    protected int GodinaRodjenja;
}

👉 GodinaRodjenja je dostupna u klasi Ucenik, ali ne i iz Main metode.


4. Dodavanje nove metode u izvedenoj klasi

class Ucenik : Osoba
{
    public int Razred;

    public void PrikaziPodatke()
    {
        Console.WriteLine(Ime + " " + Prezime + ", razred " + Razred);
    }
}

Zadatak 3: U klasi Vozilo dodati metodu PokreniSe().

Zadatak 4: U klasi Automobil dodati metodu PrikaziInfo() koja ispisuje sve podatke.

class Vozilo
{
    public string Marka;
    public int Brzina;

    public void PokreniSe()
    {
        Console.WriteLine("Vozilo se pokreće.");
    }
}

class Automobil : Vozilo
{
    public int BrojVrata;

    public void PrikaziInfo()
    {
        Console.WriteLine("Marka: " + Marka);
        Console.WriteLine("Brzina: " + Brzina);
        Console.WriteLine("Broj vrata: " + BrojVrata);
    }
}

III deo – KONSTRUKTORI IZVEDENIH KLASA


1. Šta je konstruktor?

Konstruktor je posebna metoda koja ima isto ime kao klasa, automatski se poziva pri stvaranju objekta i služi za inicijalizaciju podataka


2. Konstruktor bazne klase

class Osoba
{
    public string Ime;
    public string Prezime;

    public Osoba(string ime, string prezime)
    {
        Ime = ime;
        Prezime = prezime;
    }
}

3. Problem bez konstruktora izvedene klase

Ako bazna klasa ima konstruktor sa parametrima, izvedena klasa ga mora pozvati.


4. Konstruktor izvedene klase i base

class Ucenik : Osoba
{
    public int Razred;

    public Ucenik(string ime, string prezime, int razred)
        : base(ime, prezime)
    {
        Razred = razred;
    }
}

👉 base poziva konstruktor bazne klase.


5. Korišćenje u Main metodi

static void Main(string[] args)
{
    Ucenik u = new Ucenik("Ana", "Petrović", 3);

    u.PredstaviSe();
    Console.WriteLine("Razred: " + u.Razred);

    Console.ReadLine();
}

Zadatak 5: Napraviti klasu Vozilo sa konstruktorom (marka, brzina).

Zadatak 6: Napraviti klasu Automobil sa konstruktorom koji poziva bazni konstruktor.


< - - >


....

Last modified: Friday, 16 January 2026, 3:53 PM