+ Priklad z tabule: interface I I< A, B, C, D> i = X:I< E, F, G, H> --- + Co muze byt E, F, G, H? Na tabuli na prednasce bylo uvedeno spatne (tj. ve videozaznamu bude tez spatne). Spravne je (viz opravena fotka tabule), ze: ++ E musi byt takove, ze E : A nebo E je A ++ G musi byt takove, ze C : G nebo G je C ++ H musi byt takove, ze D : H nebo H je D, tj.: interface I I< A, B, C:G, D:H> i = = X:I< E:A, F, G, H> = = = A C D --- + Navic: konkretni priklad metod v I, a ukazka, ze kompatibilita vyse je spravne: interface I { public T2 Transform(T2 x); public T1 Calc(T3 y, T4 z); } class A {} class B {} class C : G {} class D : H {} class E : A {} class G {} class H {} class X : I { public B Transform(B x) { return x; } public E Calc(G y, H z) { y.SomeGMethod(); z.SomeHMethod(); return new E(); } } I i = new X(); A a = i.Calc( // calling X.Calc() -> it actually returns E, which is better than expected A new C(), // X.Calc() expects G, but gets better C new D() // X.Calc() expects H, but gets better D );