▁took ▁the ▁Object ive - C ▁system ▁a ▁step ▁further ▁and ▁allowed ▁for ▁the ▁addition ▁of ▁variables ▁also . ▁Other ▁languages ▁have ▁used ▁prototype - based ▁solutions ▁instead , ▁the ▁most ▁notable ▁being ▁Self . ▁ ▁The ▁C # ▁and ▁Visual ▁Basic . NET ▁languages ▁implement ▁super f icial ly ▁similar ▁functionality ▁in ▁the ▁form ▁of ▁extension ▁methods , ▁but ▁these ▁lack ▁access ▁to ▁the ▁private ▁variables ▁of ▁the ▁class . ▁Ruby ▁and ▁several ▁other ▁dynamic ▁programming ▁languages ▁refer ▁to ▁the ▁technique ▁as ▁" mon key ▁patch ing ". ▁ ▁Log t alk ▁implements ▁a ▁concept ▁of ▁categories ▁( as ▁first - class ▁entities ) ▁that ▁sub sum es ▁Object ive - C ▁categories ▁functionality ▁( Log t alk ▁categories ▁can ▁also ▁be ▁used ▁as ▁fine - gra ined ▁units ▁of ▁composition ▁when ▁defining ▁e . g . ▁new ▁classes ▁or ▁pro tot ypes ; ▁in ▁particular , ▁a ▁Log t alk ▁category ▁can ▁be ▁virt ually ▁imported ▁by ▁any ▁number ▁of ▁classes ▁and ▁pro tot ypes ). ▁ ▁Example ▁use ▁of ▁categories ▁This ▁example ▁builds ▁up ▁an ▁ ▁class , ▁by ▁defining ▁first ▁a ▁basic ▁class ▁with ▁only ▁access or ▁methods ▁implemented , ▁and ▁adding ▁two ▁categories , ▁ ▁and ▁, ▁which ▁extend ▁the ▁basic ▁class . ▁While ▁categories ▁can ▁access ▁the ▁base ▁class ' s ▁private ▁data ▁members , ▁it ▁is ▁often ▁good ▁practice ▁to ▁access ▁these ▁private ▁data ▁members ▁through ▁the ▁access or ▁methods , ▁which ▁helps ▁keep ▁categories ▁more ▁independent ▁from ▁the ▁base ▁class . ▁Im plement ing ▁such