▁of ▁ ▁is ▁more ▁special ized ▁inside ▁overrid ing ▁methods ▁than ▁in ▁the ▁super class . ▁ ▁Cast agna ▁suggests ▁that ▁examples ▁where ▁cov ari ant ▁parameter ▁types ▁are ▁superior , ▁particularly ▁binary ▁methods , ▁should ▁be ▁handled ▁using ▁multiple ▁dispatch ▁which ▁is ▁naturally ▁cov ari ant . ▁However , ▁most ▁programming ▁languages ▁do ▁not ▁support ▁multiple ▁dispatch . ▁ ▁Sum mary ▁of ▁variance ▁and ▁inheritance ▁ ▁The ▁following ▁table ▁summar izes ▁the ▁rules ▁for ▁overrid ing ▁methods ▁in ▁the ▁languages ▁discussed ▁above . ▁ ▁Gener ic ▁types ▁ ▁In ▁programming ▁languages ▁that ▁support ▁gener ics ▁( a . k . a . ▁paramet ric ▁polym orphism ), ▁the ▁programmer ▁can ▁extend ▁the ▁type ▁system ▁with ▁new ▁construct ors . ▁For ▁example , ▁a ▁C # ▁interface ▁like ▁ ▁makes ▁it ▁possible ▁to ▁construct ▁new ▁types ▁like ▁ ▁or ▁. ▁The ▁question ▁then ▁ar ises ▁what ▁the ▁variance ▁of ▁these ▁type ▁construct ors ▁should ▁be . ▁ ▁There ▁are ▁two ▁main ▁approaches . ▁In ▁languages ▁with ▁declaration - site ▁variance ▁annotations ▁( e . g ., ▁C # ), ▁the ▁programmer ▁annot ates ▁the ▁definition ▁of ▁a ▁generic ▁type ▁with ▁the ▁intended ▁variance ▁of ▁its ▁type ▁parameters . ▁With ▁use - site ▁variance ▁annotations ▁( e . g ., ▁Java ), ▁the ▁programmer ▁instead ▁annot ates ▁the ▁places ▁where ▁a ▁generic ▁type ▁is ▁instanti ated . ▁ ▁Dec laration - site ▁variance ▁annotations ▁ ▁The ▁most ▁popular ▁languages ▁with ▁declaration - site ▁variance ▁annotations ▁are ▁C # ▁and ▁K otlin ▁( using ▁the