[ ZOSTROG @ 23.06.2006. 07:27 ] @
Pomoc za pocetnika... Da li neko moze da mi neko ukratko objasni pojam abstract class u c# sa mogucnoscu prakticne primene .... hvala |
[ ZOSTROG @ 23.06.2006. 07:27 ] @
[ DarkMan @ 23.06.2006. 16:18 ] @
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. [ ZOSTROG @ 26.06.2006. 07:21 ] @
Hvala !! Sve je super objasnjenoo.... [ misk0 @ 26.06.2006. 16:01 ] @
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). Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|