abstract Ġclass ĠAbstract Add Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġadd ( s : ĠString ): ĠAny Ċ } Ċ Ċ abstract Ġclass ĠAbstract String Collection Ġ: ĠAbstract Add (), ĠCollection < String > Ċ Ċ class ĠString Collection Ġ: ĠAbstract String Collection () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġadd ( s : ĠString ) Ġ= Ġs ĊĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt Ġget () Ġ= ĠTODO () ĊĠĠĠ Ġoverride Ġfun Ġcontains ( element : ĠString ): ĠBoolean Ġ= ĠTODO () ĊĠĠĠ Ġoverride Ġfun Ġcontains All ( elements : ĠCollection < String >): ĠBoolean Ġ= ĠTODO () ĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ= ĠTODO () ĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < String > Ġ= ĠTODO () Ċ } Ċ Ċ fun Ġtest 1 ( a : ĠAbstract Add ) Ġ= ĊĠĠĠ Ġa . add (" O ") Ġas ĠString Ċ Ċ fun Ġtest 2 ( a : ĠAbstract String Collection ) Ġ= ĊĠĠĠ Ġa . add (" K ") Ġas ĠString Ċ Ċ fun Ġbox () Ġ= ĊĠĠĠ Ġtest 1 ( String Collection ()) Ġ+ Ġtest 2 ( String Collection ()) Ċ