1 namespace Test2 {3 class Program4 {5 Static voidMain (string[] args)6 {7 //job: Rubber Rubber duck, wood duck, real duck realduck. 8 //Three ducks can swim, and the rubber ducks and the real ducks will bark,9 //just a different cry, the rubber Duck "haw" called, The Real Duck "quack" called, wooden ducks will not bark.Ten OneDuck DK =NewRealduck (); A DK. Swim (); -Ibark IB =NewRealduck (); - ib. Bark (); the Console.readkey (); - } - } - //for abstract Classes + Public Abstract classDuck - { + Public Abstract voidSwim (); A } at //Interface - Public InterfaceIbark - { - voidBark (); - } - in Public classRealduck:duck, Ibark - { to Public voidBark () + { -Console.WriteLine ("Real Duck Quack"); the } * $ PublicOverridevoidSwim ()Panax Notoginseng { -Console.WriteLine ("Real ducks can swim"); the } + } A the Public classMuduck:duck + { - PublicOverridevoidSwim () $ { $Console.WriteLine ("Wood ducks can swim"); - } - } the - Public classXpduck:duck, IbarkWuyi { the Public voidBark () - { WuConsole.WriteLine ("Rubber Duck chirp"); - } About $ PublicOverridevoidSwim () - { -Console.WriteLine ("Rubber ducks can swim"); - } A } +}
C # Interface, abstract class, inheritance synthesis small exercise