The Concept of Inheritance in Modern Programming Languages
The paper gives a brief overview of existing approaches to inheritance implemented in some mainstream and experimental programming languages including Ada, Eiffel, C++, Java, Scala, Oberon, and Zonnon.Advantages and limitations of the approaches are analyzed and discussed.The paper claims that multiple inheritance model is one of the most important features that should be supported by any modern programming language because it reflects some fundamental relationships in the real world. However, only a few industrial languages do support the modelwherein such a support is far from being comfortable for users and leads to many troubles in development and maintenance. An alternative approach in the design of inheritance support is presented. The suggested approach keeps multiple inheritance as the general, powerfuland flexible mechanism for software design and reuse and is based on overloading and overriding with conflicts resolution at call sites based on conformance instead of full validity of the system inheritance graph. All typical problems in multiple inheritance including name clashes, name resolution, signature conformance, covariance and contravariance are carefully consideredand discussed. The detailed explanation of how the problems are solved within the approach is presented. The paper describes a completely research project and is not supported by Samsung R&D Institute.
Proceedings of the Institute for System Programming, vol. 27, issue 6, 2015, pp. 169-188.
ISSN 2220-6426 (Online), ISSN 2079-8156 (Print).
DOI: 10.15514/ISPRAS-2015-27(6)-12Full text of the paper in pdf (in Russian) Back to the contents of the volume