CS 112 - Week 12 Lecture 2 - 2022-11-10

TODAY WE WILL
*   announcements
*   continue intro to inheritance
*   prep for next class

*   watch for class e-mails as parts of the delayed Homework 9
    are posted; (to be due 11:59 pm on Friday, November 18)

*   Reading - still Savitch Ch. 15

=====
TRYING AGAIN:
redefining vs. overloading
=====
*   a derived class can define methods unique to that
    class (like set_color and get_color in ColorPoint --
    those are NOT part of base class Point)

*   but it can also have REDEFINED methods
    and OVERLOADED methods;

    redefined: means you want this version of a method
        to REPLACE one it would otherwise inherit
	from the base class;

        when you call a ColorPoint's method display,
	its REDEFINED method display is called,
	not base class Point's method display

    overloading: means I'd like to have
        MORE than one methos with the same
	name (and different-enough arguments that
	the compiler can tell which is intended)

        When you overload a method, you generally
	get an additional method version available;

=====
WITHIN A DERIVED CLASS' METHODS:
calling a base class'
    version of a method (in general)
=====
*   put the base class name, the SCOPE RESOLUTION operator ::,
    and the desired base class method:

    Point::to_string()

=====
WITHIN A FUNCTION USING A DERIVED CLASS OBJECT:
calling a base class'
    version of a method (in general)
=====
*   put the base class name, the SCOPE RESOLUTION operator ::,
    and the desired base class method -- BUT put these AFTER
    the derived-class object's expression and its dot operator:

    ColorPoint cp;

    cp.Point::to_string()