Super and inner - Together at last!

David S. Goldberg*, Robert Bruce Findler, Matthew Flatt

*Corresponding author for this work

Research output: Chapter in Book/Report/Conference proceedingConference contribution

9 Scopus citations

Abstract

In an object-oriented language, a derived class may declare a method with the same signature as a method in the base class. The meaning of the re-declaration depends on the language. Most commonly, the new declaration overrides the base declaration, perhaps completely replacing it, or perhaps using super to invoke the old implementation. Another possibility is that the base class always controls the method implementation, and the new declaration merely augments the method in the case that the base method calls inner. Each possibility has advantages and disadvantages. In this paper, we explain why programmers need both kinds of method redeclaration, and we present a language that integrates them. We also present a formal semantics for the new language, and we describe an implementation for MzScheme.

Original languageEnglish (US)
Title of host publicationOOPSLA'04 - Conference Proceedings
Subtitle of host publication19th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications
Pages116-129
Number of pages14
StatePublished - Dec 1 2004
Event19th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA'04 - Vancouver, BC, Canada
Duration: Oct 24 2004Oct 28 2004

Publication series

Name19th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA'04

Other

Other19th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA'04
CountryCanada
CityVancouver, BC
Period10/24/0410/28/04

Keywords

  • Augment
  • Inheritance
  • Inner
  • Override
  • Super

ASJC Scopus subject areas

  • Engineering(all)

Fingerprint Dive into the research topics of 'Super and inner - Together at last!'. Together they form a unique fingerprint.

Cite this