fork download
  1. using System;
  2.  
  3. public class DocumentWriter
  4. {
  5. public void CreateDocument()
  6. {
  7. CreatePage();
  8. }
  9.  
  10. protected virtual void CreatePage()
  11. {
  12. System.Console.WriteLine("DocumentWriter.CreatePage()");
  13. }
  14. }
  15.  
  16. public class PdfDocumentWriter : DocumentWriter
  17. {
  18. protected override void CreatePage()
  19. {
  20. System.Console.WriteLine("PdfDocumentWriter.CreatePage()");
  21. }
  22. }
  23.  
  24. public class HtmlDocumentWriter : DocumentWriter
  25. {
  26. protected override void CreatePage()
  27. {
  28. System.Console.WriteLine("HtmlDocumentWriter.CreatePage()");
  29. }
  30. }
  31.  
  32. public static class Program
  33. {
  34. public static void Main()
  35. {
  36. DocumentWriter documentWriter = new PdfDocumentWriter();
  37. documentWriter.CreateDocument();
  38.  
  39. // Re-use the same variable.
  40. // CreateDocumentwill still call the correct version of CreatePage.
  41. documentWriter = new HtmlDocumentWriter();
  42. documentWriter.CreateDocument();
  43. }
  44. }
Success #stdin #stdout 0.02s 14924KB
stdin
Standard input is empty
stdout
PdfDocumentWriter.CreatePage()
HtmlDocumentWriter.CreatePage()