2004
DOI: 10.1145/1035292.1028986
|View full text |Cite
|
Sign up to set email alerts
|

Scalable extensibility via nested inheritance

Abstract: Inheritance is a useful mechanism for factoring and reusing code. However, it has limitations for building extensible systems. We describe nested inheritance, a mechanism that addresses some of the limitations of ordinary inheritance and other code reuse mechanisms. Using our experience with an extensible compiler framework, we show how nested inheritance can be used to construct highly extensible software frameworks. The essential aspects of nested inheritance are formalized in a simple object-oriented langua… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
46
0
1

Year Published

2006
2006
2016
2016

Publication Types

Select...
4
3
1

Relationship

0
8

Authors

Journals

citations
Cited by 32 publications
(47 citation statements)
references
References 26 publications
0
46
0
1
Order By: Relevance
“…For the same reasons, we chose FJ over other Java calculi like Classic Java [13], Java light [25], or Java s [12]. Besides many other examples, FJ was used to formally discuss an extension of Java with generics [17], to formally discuss inner classes [18], and to reason about new composition techniques like nested inheritance [26].…”
Section: Featherweight Javamentioning
confidence: 99%
“…For the same reasons, we chose FJ over other Java calculi like Classic Java [13], Java light [25], or Java s [12]. Besides many other examples, FJ was used to formally discuss an extension of Java with generics [17], to formally discuss inner classes [18], and to reason about new composition techniques like nested inheritance [26].…”
Section: Featherweight Javamentioning
confidence: 99%
“…Considerable research efforts including family polymorphism have been recently devoted to solve this problem [8,12,21,30,18,5,23]. In family polymorphism, like virtual methods, a reference to a nested class member is resolved at run-time, thus the meaning of mutual references to class names will change when a subclass of the enclosing class is derived and those member classes are inherited.…”
Section: A Graph Examplementioning
confidence: 99%
“…This restriction becomes a serious problem when we consider the collaboration based implementation such as family polymorphism and other approaches [8,12,21,30,18,5,23]. Family polymorphism satisfies the important requirement of scalability; i.e., in family polymorphism, each set of mutually recursive classes, namely a family, may be safely extended without modification of the existing source code.…”
Section: Introductionmentioning
confidence: 99%
“…A refinement introduces new members to this class and/or extends existing methods by method overriding There are several techniques for implementing class refinements, e.g., mixins [10,14], classboxes [9], virtual classes [23], or nested inheritance [27].…”
Section: Collaboration Languagesmentioning
confidence: 99%