Avatar
NoThing
Neregistrovaný
Avatar
NoThing:

Ahoj. Mám třídu Player a od ní dědí třídy Warrior a Magician. Do listu typu Player vkládám různě Warriora nebo Magiciana. Chci udělat metodu boj Warrior a Magician mají jiné vlastnosti. Teď to dělám tak, že zjistím jakého typu je třída v listu (if(PlayerList[x] is Warrior) podle toho prvek z listu přetipuju , ale tímto způsobem musím udělat 3 přetížené metody, vím že to jde udělat bez duplikace, ale nemůžu přijít na to jak. Děkuji za rady.

 
Odpovědět 16.10.2013 18:01
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na NoThing
David Čápka:

Typ rozpoznávat vůbec nemusíš, prostě zavoláš boj a každý bude bojovat svým způsobem.

Nahoru Odpovědět 16.10.2013 18:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
NoThing
Neregistrovaný
Avatar
Odpovídá na David Čápka
NoThing:

Možná jsem to špatně vysvětlil. Chi metodu Boj, která bude mít dva vstupní parametry Magician vs Magician nebo Magician vs Warrior nebo Warrior vs Warrior, jenže list je typu player, když udělám public static void boj(Player Player1, Player Player2) tak se nedostanu k vlastnostem Warriora a Magiciana takže do metody musím vkládat přetipovaného Playera. Takhle ale musím zdlouhavě zjišťovat tip a musím mít 3 metody.

 
Nahoru Odpovědět 16.10.2013 18:15
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na NoThing
Jan Vargovský:

Tak jí implementuj už do té třídy Player a pak nemusíš přetypovávat.

 
Nahoru Odpovědět 16.10.2013 18:19
Avatar
vitamin
Člen
Avatar
Odpovídá na NoThing
vitamin:

To co chces sa da implementovat pomocou multimetod (niekedy su volane Openmethods). V C# sa daju nasymulovat takto: http://blogs.msdn.com/…dynamic.aspx

Rychlost takeho kodu nebude bohvie aka...
Lepsie bude asi zmenit dizajn aplikacie.

 
Nahoru Odpovědět 16.10.2013 18:32
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na NoThing
David Čápka:

To vymýšlíš nějakou hloupost. Podívej se na tohle: http://www.itnetwork.cz/…rena-s-magem

Nahoru Odpovědět 16.10.2013 18:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.