tb0224.pp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. { %KNOWN }
  2. { Old file: tbs0262.pp }
  3. { problems with virtual and overloaded methods }
  4. program test;
  5. type
  6. obj1 = object
  7. st2 : string;
  8. constructor init;
  9. procedure writeit;
  10. procedure writeit(st : string);virtual;
  11. end;
  12. obj2 = object(obj1)
  13. procedure writeit;virtual;
  14. end;
  15. obj3 = object(obj2)
  16. l2 : longint;
  17. procedure writeit(l : longint);virtual;
  18. procedure writeit(st : string);virtual;
  19. end;
  20. obj4 = object(obj3)
  21. procedure writeit;virtual;
  22. procedure writeit(st : string);virtual;
  23. end;
  24. obj5 = object(obj4)
  25. procedure writeit;virtual;
  26. procedure writeit(st : string);
  27. procedure writeit(l : longint);virtual;
  28. end;
  29. constructor obj1.init;
  30. begin
  31. end;
  32. procedure obj1.writeit;
  33. begin
  34. Writeln('Obj1 writeit');
  35. end;
  36. procedure obj1.writeit(st : string);
  37. begin
  38. Writeln('Obj1 writeit(string) ',st);
  39. end;
  40. procedure obj2.writeit;
  41. begin
  42. Writeln('Obj2 writeit');
  43. end;
  44. procedure obj3.writeit(st : string);
  45. begin
  46. Writeln('Obj3 writeit(string) ',st);
  47. end;
  48. procedure obj3.writeit(l : longint);
  49. begin
  50. Writeln('Obj2 writeit(longint) ',l);
  51. end;
  52. procedure obj4.writeit;
  53. begin
  54. Writeln('Obj4 writeit');
  55. end;
  56. procedure obj4.writeit(st : string);
  57. begin
  58. Writeln('Obj4 writeit(string) ',st);
  59. end;
  60. procedure obj5.writeit;
  61. begin
  62. Writeln('Obj5 writeit');
  63. end;
  64. procedure obj5.writeit(st : string);
  65. begin
  66. Writeln('Obj5 writeit(string) ',st);
  67. end;
  68. procedure obj5.writeit(l : longint);
  69. begin
  70. Writeln('Obj5 writeit(longint) ',l);
  71. end;
  72. var
  73. o1 : obj1;
  74. o2 : obj2;
  75. o3 : obj3;
  76. o4 : obj4;
  77. o5 : obj5;
  78. begin
  79. o1.init;
  80. o1.writeit;
  81. o1.writeit('o1');
  82. o2.init;
  83. o2.writeit;
  84. o2.writeit('o2');
  85. o3.init;
  86. o3.writeit;
  87. o3.writeit('o3');
  88. o3.writeit(3);
  89. o4.init;
  90. o4.writeit;
  91. o4.writeit('o4');
  92. o4.writeit(4);
  93. o5.init;
  94. o5.writeit;
  95. o5.writeit('o5');
  96. o5.writeit(5);
  97. end.