CS102 · Annotated SlidesPolymorphism — Polymorphism
Polymorphism · Annotated slides

Polymorphism

Programming in the general: superclass references to subclass objects, dynamic binding, abstract classes and methods, the polymorphic payroll system (Employee hierarchy), instanceof and downcasting, final methods and classes, and interfaces (Measurable, Payable) for unrelated classes.

Slide text Study notes Highlight: key words Tips, tricks & traps Seen again elsewhere How it can come up

Polymorphism

CS102 · Java How to Program, Chapter 10
1
Slide 2: Slide 2
Exam weight Low
    Slide 3: Slide 3
    Exam weight Low
    1. Polymorphism: write code for the superclass and it works for every subclass (“program in the general”).
    Slide 4: Slide 4
    Exam weight Low
      Slide 5: Slide 5
      Exam weight Low
      1. Same message (move) → different behaviour per object (fish swims, bird flies).
      Slide 6: Slide 6
      Exam weight Low
      1. Polymorphic systems are extensible: add new subclasses with little or no change.
      Slide 7: Slide 7
      Exam weight Low
        Slide 8: Slide 8
        Exam weight High
        1. A superclass reference can point to a subclass object; the OBJECT’s type decides which method runs.
        🎯 How this can come up · 1 question
        MCQ

        Employee e = new SalariedEmployee(); e.earnings(); runs which earnings()?

        Slide 9: Slide 9
        Exam weight Low
        1. A superclass object is NOT a subclass object; downcasting needs an explicit cast.
        Slide 10: Slide 10
        Exam weight Low
          Slide 11: Slide 11
          Exam weight Low
            Slide 12: Slide 12
            Exam weight Low
              Slide 13: Slide 13
              Exam weight Low
                Slide 14: Slide 14
                Exam weight High
                1. Compile time: the variable’s type must have the method. Run time: the object’s type picks the version → dynamic binding.
                Memory trickCompiler checks the REFERENCE type; JVM runs the OBJECT type.
                Slide 15: Slide 15
                Exam weight Low
                1. Abstract classes: never instantiated; used as superclasses; incomplete.
                Slide 16: Slide 16
                Exam weight Low
                  Slide 17: Slide 17
                  Exam weight High
                  1. abstract method = no body (public abstract void draw();). A class with an abstract method must be abstract. Concrete subclasses must implement it.
                  🎯 How this can come up · 2 questions
                  True / False

                  A class that contains an abstract method must itself be declared abstract.

                  True / False

                  Constructors can be declared abstract.

                  Slide 18: Slide 18
                  Exam weight High
                  1. You can’t create objects of an abstract class, but you can declare variables of its type.
                  🎯 How this can come up · 1 question
                  MCQ

                  Given abstract class Shape, which is legal?

                  Slide 19: Slide 19
                  Exam weight Low
                    Slide 20: Slide 20
                    Exam weight Low
                    1. Payroll case study: salaried, hourly, commission and base-plus-commission employees.
                    Slide 21: Slide 21
                    Exam weight Low
                      Slide 22: Slide 22
                      Exam weight Low
                        Slide 23: Slide 23
                        Exam weight Low
                          Slide 24: Slide 24
                          Exam weight Low
                          1. Employee declares abstract earnings(); each subclass overrides it.
                          Slide 25: Slide 25
                          Exam weight Low
                            Slide 26: Slide 26
                            Exam weight Low
                              Slide 27: Slide 27
                              Exam weight Low
                                Slide 28: Slide 28
                                Exam weight Low
                                  Slide 29: Slide 29
                                  Exam weight Low
                                    Slide 30: Slide 30
                                    Exam weight Low
                                      Slide 31: Slide 31
                                      Exam weight Low
                                        Slide 32: Slide 32
                                        Exam weight Low
                                          Slide 33: Slide 33
                                          Exam weight Low
                                            Slide 34: Slide 34
                                            Exam weight Low
                                            1. Process objects polymorphically; give BasePlusCommission employees a 10% raise using instanceof.
                                            Slide 35: Slide 35
                                            Exam weight Low
                                            1. toString and earnings calls are resolved at run time: dynamic (late) binding.
                                            Slide 36: Slide 36
                                            Exam weight Low
                                              Slide 37: Slide 37
                                              Exam weight High
                                              1. Downcasting to the wrong type throws ClassCastException → check with instanceof first.
                                              🎯 How this can come up · 1 question
                                              MCQ

                                              Before downcasting an Employee reference to BasePlusCommissionEmployee you should check with:

                                              Slide 38: Slide 38
                                              Exam weight Low
                                              1. getClass().getName() returns the object’s class name.
                                              Slide 39: Slide 39
                                              Exam weight Low
                                                Slide 40: Slide 40
                                                Exam weight Low
                                                1. Assigning a superclass reference to a subclass variable needs a cast.
                                                Slide 41: Slide 41
                                                Exam weight Low
                                                1. final method: can’t be overridden (static binding). private and static methods are implicitly final.
                                                Slide 42: Slide 42
                                                Exam weight High
                                                1. final class: can’t be extended (e.g., String).
                                                🎯 How this can come up · 1 question
                                                MCQ

                                                A class declared final:

                                                Slide 43: Slide 43
                                                Exam weight Low
                                                1. An interface lists methods to implement; a class can implement many interfaces.
                                                Slide 44: Slide 44
                                                Exam weight Low
                                                  Slide 45: Slide 45
                                                  Exam weight Low
                                                    Slide 46: Slide 46
                                                    Exam weight High
                                                    1. Interface methods are implicitly public abstract; fields are public static final.
                                                    🎯 How this can come up · 1 question
                                                    MCQ

                                                    Fields declared in an interface are implicitly:

                                                    Slide 47: Slide 47
                                                    Exam weight Low
                                                    1. implements = a contract; a class that doesn’t implement every method must be abstract.
                                                    Slide 48: Slide 48
                                                    Exam weight Low
                                                      Slide 49: Slide 49
                                                      Exam weight Low
                                                        Slide 50: Slide 50
                                                        Exam weight Low
                                                          Slide 51: Slide 51
                                                          Exam weight Low
                                                            Slide 52: Slide 52
                                                            Exam weight Low
                                                              Slide 53: Slide 53
                                                              Exam weight Low
                                                                Slide 54: Slide 54
                                                                Exam weight Low
                                                                  Slide 55: Slide 55
                                                                  Exam weight Low
                                                                  1. Use an interface instead of an abstract class when there’s no default implementation to inherit.
                                                                  Slide 56: Slide 56
                                                                  Exam weight Low
                                                                  1. Implementing classes have an is-a relationship with the interface type.
                                                                  Slide 57: Slide 57
                                                                  Exam weight Low
                                                                    Slide 58: Slide 58
                                                                    Exam weight Low
                                                                      Slide 59: Slide 59
                                                                      Exam weight Low
                                                                      1. UML: «interface» stereotype; realization = dashed arrow with hollow head.
                                                                      Slide 60: Slide 60
                                                                      Exam weight Low
                                                                        Slide 61: Slide 61
                                                                        Exam weight Low
                                                                          Slide 62: Slide 62
                                                                          Exam weight Low
                                                                            Slide 63: Slide 63
                                                                            Exam weight Low
                                                                              Slide 64: Slide 64
                                                                              Exam weight Low
                                                                                Slide 65: Slide 65
                                                                                Exam weight Low
                                                                                  Slide 66: Slide 66
                                                                                  Exam weight Low
                                                                                    Slide 67: Slide 67
                                                                                    Exam weight Low
                                                                                      Slide 68: Slide 68
                                                                                      Exam weight Low
                                                                                        Slide 69: Slide 69
                                                                                        Exam weight Low
                                                                                          Slide 70: Slide 70
                                                                                          Exam weight High
                                                                                          1. One superclass, many interfaces: class X extends A implements I1, I2.
                                                                                          🎯 How this can come up · 1 question
                                                                                          True / False

                                                                                          A Java class can implement more than one interface.

                                                                                          Slide 71: Slide 71
                                                                                          Exam weight Low