Should superclasses be abstract?

  • Walter L. Hürsch
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 821)


In object-oriented design and languages, abstractness of classes is a concept whose relationship to other concepts is not yet fully understood and agreed upon. This paper clarifies the concept of abstractness and examines the relationship between abstractness and inheritance. It does this by discussing several aspects of the so-called abstract superclass rule, a design rule for object-oriented programming which requires that all superclasses be abstract. In the course of this discussion, we evaluate in which situations this rule should be considered beneficial.


Class Management Object-Oriented Programming and Data Modeling Software Evolution 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [BI94]
    Kenneth Baclawski and Bipin Indurkhya. The notion of inheritance in object-oriented programming. Communications of the ACM, 36, 1994. Technical correspondence; accepted for publication.Google Scholar
  2. [BJ66]
    Corrado Böhm and Giuseppe Jacopini. Flow Diagrams, Turing Machines and Languages with only Two Formation Rules. Communications of the ACM, 9(5):366–371, May 1966.CrossRefGoogle Scholar
  3. [Boe86]
    B. W. Boehm. A Spiral Model of Software Development and Enhancement. Software Engineering Notes, 11(4), 1986.Google Scholar
  4. [Bra83]
    Ronald J. Brachman. What IS-A Is and Isn't: An Analysis of Taxonomic Link in Semantic Networks. IEEE Computer Magazine, 16(10):30–36, October 1983.Google Scholar
  5. [CCHO89]
    Peter S. Canning, William R. Cook, Walter L. Hill, and Walter G. Olthoff. Interfaces for strongly-typed object-oriented programming. In Norman Meyrowitz, editor, Object-Oriented Programming Systems, Languages and Applications Conference, pages 457–467, New Orleans, Louisiana, October 1989. ACM Press. Special Issue of SIGPLAN Notices, Vol.24, No.10.Google Scholar
  6. [Coo89]
    William R. Cook. A Proposal for Making Eiffel Type-Safe. The Computer Journal, 32(4):305–311, 1989. A preliminary version of this paper appeared in the proceedings of ECOOP '89.CrossRefGoogle Scholar
  7. [Deu83]
    L. Peter Deutsch. Reusability in the Smalltalk-80 Programming System. In Proceedings of the Workshop on Reusability in Programming, pages 72–76. ITT, 1983.Google Scholar
  8. [Deu89]
    L. Peter Deutsch. Design Reuse and Frameworks in the Smalltalk-80 System. In Ted J. Biggerstaff and Alan J. Perlis, editors, Software Reusability; Volume II, Applications and Experience, chapter 3, pages 57–71. ACM Press, 1989. ISBN 0-201-50018-3.Google Scholar
  9. [DT92]
    Mahesh Dodani and Chung-Shin Tsai. ACTS: A Type System for Object-Oriented Programming Based on Abstract and Concrete Classes. In O. Lehrman Madsen, editor, European Conference on Object-Oriented Programming, pages 309–324, Utrecht, The Netherlands, June/July 1992. Springer Verlag, Lecture Notes in Computer Science. Vol. 615.Google Scholar
  10. [ES90]
    Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, Reading, MA, 1990. ISBN 0-201-51459-1.Google Scholar
  11. [GR83]
    Adele Goldberg and David Robson. Smalltalk-80, the Language and its Implementation. Addison-Wesley, Reading, MA, 1983. ISBN 0-201-11371-6.Google Scholar
  12. [Gro93]
    John A. Grosberg. Comments on considering ‘class’ harmful. Communications of the ACM, 36(1):113–114, January 1993. Technical correspondence.Google Scholar
  13. [HO87]
    Daniel C. Halbert and Patrick D. O'Brien. Using types and inheritance in object-oriented programming. IEEE Software, 4(5):71–79, September 1987.Google Scholar
  14. [Hür94]
    Walter L. Hürsch. Covariance in the presence of the abstract superclass rule. Technical Report NU-CCS-94-04, College of Computer Science, Northeastern University, Boston, MA, March 1994.Google Scholar
  15. [JF88]
    Ralph E. Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Programming, pages 22–35, June/July 1988.Google Scholar
  16. [Joh93]
    Ralph Johnson. Abstract superclasses in object-oriented libraries. Private communication, November 1993.Google Scholar
  17. [Kee89]
    Sonya E. Keene. Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS. Addison-Wesley, Reading, MA, 1989. ISBN 0-201-17589-4.Google Scholar
  18. [LP91]
    Wilf LaLonde and John Pugh. Subclassing ≠ Subtyping ≠ Is-a. Journal of Object-Oriented Programming, 3(5):57–62, January 1991.Google Scholar
  19. [LX93]
    Karl J. Lieberherr and Cun Xiao. Formal Foundations for Object-Oriented Data Modeling. IEEE Transactions on Knowledge and Data Engineering, 5(6), June 1993.Google Scholar
  20. [Mey88]
    Bertrand Meyer. Object-Oriented Software Construction. International Series in Computer Science. Prentice-Hall, Englewood Cliffs, NJ, 1988. ISBN 0-13-629049-3.Google Scholar
  21. [Mey92]
    Bertrand Meyer. Eiffel: The Language. Object-Oriented Series. Prentice-Hall, Englewood Cliffs, NJ, 1992. ISBN 0-13-247925-7.Google Scholar
  22. [Rie94]
    Arthur J. Riel. Object-Oriented Design Heuristics: Gateways for Design Transformation Patterns. Submitted for publication, February 1994.Google Scholar
  23. [Sak92]
    Markku Sakkinen. A Critique of the Inheritance Principles of C++. Computing Systems, The Journal of the USENIX Association, 5(1):69–110, Winter 1992.Google Scholar
  24. [SLHS94]
    Ignacio Silva-Lepe, Walter L. Hürsch, and Greg Sullivan. A Report on Demeter/C++. C++ Report, 6(2):24–30, February 1994.Google Scholar
  25. [Tsa94]
    Chung-Shin Tsai. Corrections to the Abstract Concrete Type System. Private communication, March 1994.Google Scholar
  26. [Wal9l]
    Jim Waldo. Controversy: The Case for Multiple Inheritance in C++. Computing Systems, The Journal of the USENIX Association, 4(2):157–171, 1991.Google Scholar
  27. [Weg90]
    Peter Wegner. Concepts and paradigms of object-oriented programming. OOPS Messenger, 1(1):7–87, January 1990.Google Scholar
  28. [Win92]
    Jürgen F. H. Winkler. Objectivism: ‘class’ considered harmful. Communications of the ACM, 35(8):128–130, August 1992. Technical correspondence.Google Scholar
  29. [WMH93]
    Norman Wilde, Paul Matthews, and Ross Huitt. Maintaining object-oriented software. IEEE Software, 10(1):75–80, January 1993.CrossRefGoogle Scholar
  30. [WZ88]
    Peter Wegner and Stanley B. Zdonik. Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like. In S. Gjessing and K. Nygaard, editors, European Conference on Object-Oriented Programming, pages 55–77, Oslo, Norway, August 1988. Springer Verlag, Lecture Notes in Computer Science.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • Walter L. Hürsch
    • 1
  1. 1.College of Computer ScienceNortheastern UniversityBostonUSA

Personalised recommendations