572 Chapter 12 Support for Object-Oriented Programming
- In what way do overriding methods in C# syntactically differ from their
 counterparts in C++?
- How can the parent version of an inherited method that is overridden in
 a subclass be called in that subclass in C#?
- Are all Ada 95 subclasses subtypes?
- How is a call to a subprogram in Ada 95 specified to be dynamically
 bound to a subprogram definition? When is this decision made?
- How does Ruby implement primitive types, such as those for integer and
 floating-point data?
- How are getter methods defined in a Ruby class?
- What access controls does Ruby support for instance variables?
- What access controls does Ruby support for methods?
- Are all Ruby subclasses subtypes?
- Does Ruby support multiple inheritance?
PROBLEM SET
- What important part of support for object-oriented programming is
 missing in SIMULA 67?
- In what ways can “compatible” be defined for the relationship between
 an overridden method and the overriding method?
- Compare the dynamic binding of C++ and Java.
- Compare the class entity access controls of C++ and Java.
- Compare the class entity access controls of C++ and Ada 95.
- Compare the multiple inheritance of C++ with that provided by inter-
 faces in Java.
- What is one programming situation where multiple inheritance has a
 significant advantage over interfaces?
- Explain the two problems with abstract data types that are ameliorated
 by inheritance.
- Describe the categories of changes that a subclass can make to its parent
 class.
- Explain one disadvantage of inheritance.
- Explain the advantages and disadvantages of having all values in a
 language be objects.
- What exactly does it mean for a subclass to have an is-a relationship with
 its parent class?
- Describe the issue of how closely the parameters of an overriding
 method must match those of the method it overrides.
