OVERRIDING METHODS AND POLYMORPHISM 9 3 9 4

  • Slides: 13
Download presentation
OVERRIDING METHODS AND POLYMORPHISM 9. 3 -9. 4

OVERRIDING METHODS AND POLYMORPHISM 9. 3 -9. 4

INHERITANCE AND OVERRIDING • ANY SUB CLASS INHERITS ALL METHODS AND FIELDS FROM ITS

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

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 +

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

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++; }

THE SOLUTION PUBLIC VOID DEPOSIT(DOUBLE AMT) { SUPER. DEPOSIT(AMT); TRANSACTIONCOUNT++; }

USING SUPER IN A CONSTRUCTOR • WHEN A CONSTRUCTOR IS CALLED IN A SUBCLASS,

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

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)

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;

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)

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

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

LET’S LOOK AT AN EXAMPLE • MULTIPLE CHOICE VS TRUE FALSE QUESTIONS