OVERRIDING METHODS AND POLYMORPHISM 9 3 9 4
- Slides: 13
OVERRIDING METHODS AND POLYMORPHISM 9. 3 -9. 4
INHERITANCE AND OVERRIDING • ANY SUB CLASS INHERITS ALL METHODS AND FIELDS FROM ITS SUPER CLASS. SOMETIMES WE WANT TO CHANGE HOW THAT METHOD WORKS IN THE SUB CLASS. WE DO THIS BY OVERRIDING THE METHOD. • WHEN OVERRIDING A METHOD IT MUST HAVE THE EXACT SAME HEADER AS THE ORIGINAL METHOD HAS IN THE SUPER CLASS.
EXAMPLE • CONSIDER OUR DEPOSIT METHOD INBANKACCOUNT. IF WE WANTED TO HAVE THE CAPABILITY OF TRACKING OUR TRANSACTIONS IN A CHECKINGACCOUNT CLASS, WE MAY WANT TO OVERRIDE THIS METHOD, TO DEPOSIT THE MONEY BUT ALSO INCREASE THE TRANSACTION COUNT.
WHAT IT WOULD LOOK LIKE PUBLIC VOID DEPOSIT(DOUBLE AMT) { BALANCE = BALANCE + AMT; TRANSACTIONCOUNT++; } WHAT ISSUE EXISTS?
RESERVED WORD “SUPER” • ANY TIME THAT YOU WANT TO TELL THE COMPILER TO ACCESS CODE DIRECTLY FROM THE SUPER CLASS, WE USE THE RESERVED WORD SUPER. • WHEN OVERRIDING A METHOD, WE MAY WANT TO ACCESS THE OVERRIDDEN METHOD FROM THE SUPER CLASS
THE SOLUTION PUBLIC VOID DEPOSIT(DOUBLE AMT) { SUPER. DEPOSIT(AMT); TRANSACTIONCOUNT++; }
USING SUPER IN A CONSTRUCTOR • WHEN A CONSTRUCTOR IS CALLED IN A SUBCLASS, IT ONLY INITIALIZES FIELDS IN THE SUBCLASS. • THE COMPILER IMPLICITLY CALLS THE NO ARGUMENTS CONSTRUCTOR OF THE SUPERCLASS. • IF THERE ISN’T A NO ARGS CONSTRUCTOR YOU GET AN ERROR.
TO CALL A DIFFERENT SUPER CONSTRUCTOR • SUPPOSE I HAVE A CLASS PERSON WITH FIELDS FOR AGE AND GENDER. THEN I HAVE A SUBCLASS CALLED PARENT WITH A FIELD NUMCHILDREN. CONSIDER THE FOLLOWING IS THE ONLY CONSTRUCTOR FOR PERSON: PUBLIC PERSON(INT YEARS, CHAR GEN) { AGE = YEARS; GENDER } = GEN;
NOW CONSIDER PARENT CLASS WHICH EXTENDS PERSON PUBLIC PARENT(INT YEARS, CHAR GEN, INT CHILDREN) { AGE = YEARS; GENDER = GEN; NUMCHILDREN = CHILDREN; } WILL THIS COMPILE?
NOW CONSIDER PARENT CLASS WHICH EXTENDS PERSON PUBLIC PARENT(INT CHILDREN) { NUMCHILDREN = CHILDREN; } WILL THIS COMPILE?
NOW CONSIDER PARENT CLASS WHICH EXTENDS PERSON PUBLIC PARENT(INT YEARS, CHAR GEN, INT CHILDREN) { SUPER(YEARS, GEN); NUMCHILDREN = CHILDREN; } THIS WILL COMPILE. IT WILL CALL THE SUPER CLASS CONSTRUCTOR MATCHING THE GIVEN ARGUMENTS. SUPER MUST BE THE FIRST LINE IF IT IS USED IN A CONSTRUCTOR!!!
POLYMORPHISM IN A BANKACCOUNT VARIABLE, WE COULD SAVE EITHER SAVINGSACCOUNTS OR CHECKINGACCOUNTS IF THEY ARE BOTH SUBCLASSES. POLYMORPHISM IS HOW WE DESCRIBE THE PROCESS BY WHICH METHODS ARE CALLED IN THIS INSTANCE. A CALL TO THE DEPOSIT METHOD FOR THESE ACCOUNTS WOULD AUTOMATICALLY CALL THE MOST RELEVANT METHOD FOR EACH OBJECT! THIS IS CALLED DYNAMIC METHOD LOOKUP
LET’S LOOK AT AN EXAMPLE • MULTIPLE CHOICE VS TRUE FALSE QUESTIONS
- Overriding and overloading in java
- Overriding and overloading
- Inheritance in java
- Overriding vs overloading
- Happy birthday tracey images
- Debugging has one overriding objective
- Overriding member function in c++
- Inlay wax pattern fabrication
- What is the difference between allotropy and polymorphism
- Oop encapsulation inheritance polymorphism
- Inheritance encapsulation
- Mutation and polymorphism
- Physalia polymorphism
- Polymorphism in genetics