t_classinherit.mod 894 B

12345678910111213141516171819202122232425262728293031323334
  1. MODULE TClassInherit;
  2. (* Single inheritance: a child class inherits its parent's fields and
  3. methods; child method bodies see both (n from Base, m from Sub).
  4. Exit 7. *)
  5. VAR ExitCode : INTEGER;
  6. TYPE
  7. CLASS Base;
  8. n : INTEGER;
  9. PROCEDURE SetN(v : INTEGER);
  10. PROCEDURE GetN() : INTEGER;
  11. END Base;
  12. CLASS Sub (Base);
  13. m : INTEGER;
  14. PROCEDURE SetM(v : INTEGER);
  15. PROCEDURE Sum() : INTEGER;
  16. END Sub;
  17. CLASS IMPLEMENTATION Base;
  18. PROCEDURE SetN(v : INTEGER);
  19. BEGIN n := v END SetN;
  20. PROCEDURE GetN() : INTEGER;
  21. BEGIN RETURN n END GetN;
  22. END Base;
  23. CLASS IMPLEMENTATION Sub;
  24. PROCEDURE SetM(v : INTEGER);
  25. BEGIN m := v END SetM;
  26. PROCEDURE Sum() : INTEGER;
  27. BEGIN RETURN n + m END Sum;
  28. END Sub;
  29. VAR s : Sub;
  30. BEGIN
  31. s.SetN(3); (* inherited method *)
  32. s.SetM(4); (* own method, sets inherited+own fields *)
  33. ExitCode := s.Sum()
  34. END TClassInherit.