fork download
  1. using System;
  2.  
  3. public class Foo
  4. {
  5. public Foo(){}
  6. public virtual void Print()
  7. {
  8. Console.WriteLine("Foo");
  9. }
  10. }
  11.  
  12. public class Bar : Foo
  13. {
  14. public Bar(){}
  15. public void Print()
  16. {
  17. Console.WriteLine("Bar");
  18. }
  19. }
  20.  
  21. public class OverrideBar : Foo
  22. {
  23. public OverrideBar(){}
  24. public override void Print()
  25. {
  26. Console.WriteLine("Bar");
  27. }
  28. }
  29.  
  30. public class Test
  31. {
  32. public static void Main()
  33. {
  34. Foo foo = new Foo();
  35. Bar bar = new Bar();
  36. OverrideBar oBar = new OverrideBar();
  37. Foo fooBar = (Foo)bar;
  38. Foo fooOBar = (Foo)oBar;
  39.  
  40. Console.WriteLine("Foo prints:");
  41. foo.Print();
  42. Console.WriteLine("Bar prints:");
  43. bar.Print();
  44. Console.WriteLine("OverrideBar prints:");
  45. oBar.Print();
  46. Console.WriteLine("Bar as a Foo prints:");
  47. fooBar.Print();
  48. Console.WriteLine("OverrideBar as a Foo prints:");
  49. fooOBar.Print();
  50. }
  51. }
Success #stdin #stdout 0.02s 24080KB
stdin
Standard input is empty
stdout
Foo prints:
Foo
Bar prints:
Bar
OverrideBar prints:
Bar
Bar as a Foo prints:
Foo
OverrideBar as a Foo prints:
Bar