310 likes | 459 Views
CSE 1020:Inheritance. Mark Shtern. Course evaluations. Lecture: Tuesday, July 12 Lab: Tuesday, July 12 Both will take place at the beginning of the lecture / lab. Summary. Aggregation Collection Composition Traversing. UML. Definition. C extends P:
E N D
CSE 1020:Inheritance Mark Shtern
Course evaluations Lecture: Tuesday, July 12 Lab: Tuesday, July 12 Both will take place at the beginning of the lecture / lab
Summary Aggregation Collection Composition Traversing
Definition • C extends P: • Every fields and public method present in P is also present in C • Extend is inheritance relation between the child and parent • C is a P • C is specialization of P and P is generalization of C
Inheritance Inheritance chain Inheritance hierarchy Descendant Java does not allow multiple- inheritance
Subclass API • The constructor section • The method section • Overriding methods • Override vs Overload • The field section • Shadow Field
Example 903 • Examine API of the reward card subclass and its supper class, and identify the methods that were • Overridden • Added by subclass • Provide a rational to justify why these methods were overridden or added
The substitutability Principle • It says: • When parent is expected, a child is accepted output.println(“Enter C or P”); char choice = input.nextChar(); P x; If (choice ==‘P’) { x = new P(); } else { x = new C(); }
Example 904 CreditCard card; If (type.equals(“O”)) { card = new CreditCard(9,”Adam”); } else { card = new RewardCard(9,”Adam”); } Write a fragment that asks the user whether an ordinary or a reward card is wanted, then create the appropriate card with card number 9 and cardholder name “Adam”
Early and Late Binding • The compiler performs early binding as before • Assuming no errors, it culminates in a target • VM performs late binding • Determine the class of the object • If reference null, then a “Null Point Exception” is thrown • Searches for method with matching signature and binds with it
What is expected output CreditCard card1 = new RewardCard(9, “Adam”); CreditCard card2 = new RewardCard(9, “Adam”); card1.charge(500); card1.pay(500); output.println(card1.isSimilar(card2));
Polymorphism CreditCard card; .... Card.charge(500.0); Polymorphic is capable of having multiple forms Polymorphism refers to the ability of the same entity to have multiple forms instanceof
Predict output of the following code CreditCard card1 = new RewardCard(9, “Adam”); CreditCard card2 = new RewardCard(9, “Adam”); card1.charge(500); card1.pay(100); output.println(card1.isSimilar(card2)); output.println(card1.isSimilar((RewardCard)card2)); output.println((RewardCard)card1.isSimilar(card2)); output.println((RewardCard)card1.isSimilar((RewardCard)card2));
Abstract Class Abstract class does not encapsulate an actual object
Abstract Class • API public abstract class Vehicle • Factory Method Vehicle myCar = Vehicle.createCar(); • Subclass constructor Vehicle myCar = new Car();
Example 908 Create an instance of the type Calendar
Interface • Interface retains only • Constants • Contracts of the shared methods
Interface A class contains implementation of all interface methods is said to implement interface Implementation is-a relation A class can implement as many interfaces as needed
Object Class Boolean equals(Object other) String toString() Class getClass()
Generic Generic or Parameterized Type The generic idea allows an implementer to write a component that can handle only one type T but without specifying T Bar<CreaditCard> bag = new Bag<CreaditCard>();
Summary Inheritance, Polymorphism and Substitutability, Binding Interfaces, Abstract class Generic
Exercise 9.4(modified) • Determine the API of class Bee in this UML diagram
Exercise 905678 • Based on the inheritance chain determine whether the following fragments have • Compiler-error • Run-time error • Justify the cast in
Exercise 920 The following fragment seeks to invoke toString method of the Object class in order to determine the memory address of a Fraction instance Object tmp = new Fraction(); output.println(tmp.toString()); output.println((Object)tmp.toString()); Predict and Explain the output
Exercise 922 Consider the following fragment Fraction x = new Money(2.25); Money y = new Money(5.27); output.println(x.resembles(y)); output.println(((MixedNumber)x).resembles(y)); output.println(((Money)x).resembles(y)); Predict output
Same as previous (Exercise 921) Fraction x = new Money(2.25); Fraction xFr = new Fraction(225, 100); Fraction yFr = new Fraction(527, 100); output.println(xFr.resembles(yFr)); MixedNumberxMi = new MixedNumber(1, 2, 25, 100); MixedNumberyMi = new MixedNumber(1, 5, 27, 100); output.println(xMi.resembles(yMi)); Money xMo = new Money(2.25); Money yMo = new Money(5.27); output.println(xMo.resembles(yMo));
Exercise 9.16 • Write a program that generates statistics about the return type of the getRandom method of the MixedNumber class • Invoke 100 times and output the number of times a Fraction or a MixedNumber was returned • Use instanceof
Exercise 9.17 • Write a program that generates statistics about the return type of the getRandom method of the MixedNumber class • Invoke 100 times and output the number of times a Fraction or a MixedNumber was returned • Use getClass