Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE 1020:Inheritance Mark Shtern.

Similar presentations


Presentation on theme: "CSE 1020:Inheritance Mark Shtern."— 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

8 Inheritance Inheritance chain Inheritance hierarchy Descendant
Java does not allow multiple- inheritance

9 Subclass API The constructor section The method section
Overriding methods Override vs Overload The field section Shadow Field

10 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

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

12 Example 904 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” CreditCard card; If (type.equals(“O”)) { card = new CreditCard(9,”Adam”); } else { card = new RewardCard(9,”Adam”); }

13 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

14 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));

15 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

16 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));

17 Abstract Class Abstract class does not encapsulate an actual object

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

19 Example 908 Create an instance of the type Calendar

20 Interface Interface retains only Constants
Contracts of the shared methods

21 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

22 Object Class Boolean equals(Object other) String toString()
Class getClass()

23 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>();

24 Summary Inheritance, Polymorphism and Substitutability, Binding
Interfaces, Abstract class Generic

25 Exercise 9.4 (modified) Determine the API of class Bee in this UML diagram

26 Exercise Based on the inheritance chain determine whether the following fragments have Compiler-error Run-time error Justify the cast in

27 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

28 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

29 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)); MixedNumber xMi = new MixedNumber(1, 2, 25, 100); MixedNumber yMi = 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));

30 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

31 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


Download ppt "CSE 1020:Inheritance Mark Shtern."

Similar presentations


Ads by Google