[ marko_81 @ 16.11.2010. 15:21 ] @
| 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();
}
|
[ Shadowed @ 16.11.2010. 15:38 ] @
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 :)
[ Boris B. @ 17.11.2010. 09:49 ] @
[ Java Beograd @ 17.11.2010. 11:29 ] @
S tim da ovde nad promenljivom obj ne možeš da izvršavaš one funkcije klase ClassA koje nisu implementacije interfejsa IInterfaceA
[ Boris B. @ 17.11.2010. 11:51 ] @
Naravno da mozes, (obj as ClassA).NonInterfaceMethod(), doklegod "obj is ClassA"
[ marko_81 @ 17.11.2010. 13:35 ] @
Hvala svima na objasnjenjima. Sad je mnogo jasnije.
[ Java Beograd @ 17.11.2010. 14:38 ] @
Citat:
Boris B.: Naravno da mozes, (obj as ClassA).NonInterfaceMethod(), doklegod "obj is ClassA"
OK, ali to je već kastovanje.
[ lelorinel @ 29.11.2010. 13:17 ] @
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)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.