• 3 odgovora
  • 2.867 pregleda
pomoc u vezi Abstract class 23.06.2006. u 07:27 · pre 247 meseci #1

Pomoc za pocetnika...

Da li neko moze da mi neko ukratko objasni pojam abstract class u c#
sa mogucnoscu prakticne primene ....


hvala
Re: pomoc u vezi Abstract class 23.06.2006. u 16:18 · pre 247 meseci #2
Poenta abstract klase je da napravis baznu klasu koja je, grubo receno, nedovrsena tj. ima metoda bez koda (zovu se apstraktne metode). Apstraktne klase se ne mogu instancirati vec se moraju naslediti nekom novom klasom koja ce implementirati te apstraktne metode tj. imati kod za te metode koje fale.

Apstraktne klase ispred svog naziva imaju kljucnu rec abstract i u sebi sadrzi apstraktne metode koje u definiciji imaju istu tu kljucnu rec ali nemaju nikakav kod (samo stavis posle imena metode ;).
Kada napravis novu klasu koja nasledjuje tu apstraktnu klasu moras napisati kod za sve apstratkne metode (mesto abstract pises override).

Evo jedan mali primer:
Code:

        public abstract class Osoba
        {
            public static void KakoSeZove(Osoba osoba)
            {
                MessageBox.Show(osoba.Ime());
            }
            public abstract String Ime();
        }

        public class Pera : Osoba
        {
            public override String Ime()
            {
                return "Pera";
            }
        }
        public class Zika: Osoba
        {
            public override String Ime()
            {
                return "Zika";
            }
        }

            Osoba osoba1 = new Pera();
            Osoba osoba2 = new Zika();

            Osoba.KakoSeZove(osoba1);
            Osoba.KakoSeZove(osoba2);


Izvinjavam se na malo grubljem opisu. Mozda neko moze to malo strucnije da objasni.
Re: pomoc u vezi Abstract class 26.06.2006. u 16:01 · pre 247 meseci #4
Da dodam josh malo posto to citam trenutno... :)

Iako je ne mozes instancirati (ne mozes kreirati objekat od abstract klase) mozes je koristiti kao type za parametre u drugim klasama. Recimo ovako nesto
Code:
    public abstract class Novi
    {
        public abstract string Stampaj();
    }

    public class Sledeci : Novi
    {
        public override string Stampaj()
        {
            return "misk0";
        }
    }
    class Podatak
    {
        protected string ime;
        public string Ime
        {
            get
            {
                return ime;
            }
        }
        public Podatak(Novi nv)
        {
            ime = nv.Stampaj();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Sledeci sl = new Sledeci();
            Podatak pod = new Podatak(sl);
            Console.WriteLine(pod.Ime);
        }
    }


Kreirao sam Novi kao abstract klasu i nju sam stavio kao jedan parametar u konstruktor metod klase Podatak. Buduci da ne mogu kreirati objekt Novi (jer je to abstract klasa), naslijedio sam ga u objekat Sledeci i onda sam taj objekat proslijedio kao parametar pri kreiranju objekta Podatak.
Takodje abtract klase se cesto zovu i base abstract jer je obavezno naslijedjivanje te klase. Naslijedjene klase se zove jos 'concrete' ili konkretne (ako se moze previsti tako).
Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme