1 / 31

CSE 1020:Inheritance

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:

donat
Download Presentation

CSE 1020:Inheritance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 1020:Inheritance Mark Shtern

  2. Course evaluations Lecture: Tuesday, July 12 Lab: Tuesday, July 12 Both will take place at the beginning of the lecture / lab

  3. Summary Aggregation Collection Composition Traversing

  4. UML

  5. 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

  6. UML diagram

  7. Inheritance Inheritance chain Inheritance hierarchy Descendant Java does not allow multiple- inheritance

  8. Subclass API • The constructor section • The method section • Overriding methods • Override vs Overload • The field section • Shadow Field

  9. 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

  10. 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(); }

  11. 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”

  12. 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

  13. 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));

  14. 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

  15. 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));

  16. Abstract Class Abstract class does not encapsulate an actual object

  17. Abstract Class • API public abstract class Vehicle • Factory Method Vehicle myCar = Vehicle.createCar(); • Subclass constructor Vehicle myCar = new Car();

  18. Example 908 Create an instance of the type Calendar

  19. Interface • Interface retains only • Constants • Contracts of the shared methods

  20. 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

  21. Object Class Boolean equals(Object other) String toString() Class getClass()

  22. 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>();

  23. Summary Inheritance, Polymorphism and Substitutability, Binding Interfaces, Abstract class Generic

  24. Exercise 9.4(modified) • Determine the API of class Bee in this UML diagram

  25. Exercise 905678 • Based on the inheritance chain determine whether the following fragments have • Compiler-error • Run-time error • Justify the cast in

  26. 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

  27. 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

  28. 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));

  29. 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

  30. 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

More Related