• 7 odgovora
  • 2.845 pregleda
Zasto je ovo dozvoljeno? 16.11.2010. u 15:21 · pre 194 meseci #1
Ako definisem interfejs i klasu koja ga reazlizuje:
Code:

public interface IInterfaceA {...}

public class ClassA : IInterfaceA {...}

da li je ovakvo instanciranje objekta klase ispravno i ako jeste, zasto?
Code:

public class ClassB {
    IInterfaceA obj = new ClassA();
}
Re: Zasto je ovo dozvoljeno? 16.11.2010. u 15:38 · pre 194 meseci #2
Jeste ispravno jer si ti takvom deklaracijom promenljive rekao nesto kao "ova promenljiva prihvata ono sto definise ovaj interface" sto je za tu klasu tacno. To sto ona mozda sadrzi jos stosta je nebitno.
Interfejsi tome i sluze :)
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Zasto je ovo dozvoljeno? 17.11.2010. u 09:49 · pre 193 meseci #3
OOP Polimorfizam
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Zasto je ovo dozvoljeno? 17.11.2010. u 11:29 · pre 193 meseci #4
S tim da ovde nad promenljivom obj ne možeš da izvršavaš one funkcije klase ClassA koje nisu implementacije interfejsa IInterfaceA
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Zasto je ovo dozvoljeno? 17.11.2010. u 11:51 · pre 193 meseci #5
Naravno da mozes, (obj as ClassA).NonInterfaceMethod(), doklegod "obj is ClassA"
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Re: Zasto je ovo dozvoljeno? 17.11.2010. u 13:35 · pre 193 meseci #6
Hvala svima na objasnjenjima. Sad je mnogo jasnije.
Re: Zasto je ovo dozvoljeno? 17.11.2010. u 14:38 · pre 193 meseci #7
Citat:
Boris B.: Naravno da mozes, (obj as ClassA).NonInterfaceMethod(), doklegod "obj is ClassA"
OK, ali to je već kastovanje.
Potpis
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Re: Zasto je ovo dozvoljeno? 29.11.2010. u 13:17 · pre 193 meseci #8
ujedno da dodam da prema dependency inversion principu, prosledjivanje interface tipa kao parametra je pozeljno jer se time povecava testabilnost koda (moguce injectovanje mock/stub implementacije)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme