Download presentation
Presentation is loading. Please wait.
1
COMP 114 Kimberly Noonan Chris VanderKnyff William Luebke
2
What we’re doing today… ► Questions from Lecture Abstract classes/methods Inheritance Polymorphism / Overloading / Dynamic Dispatch ► Assignment 3 Rubric ► Avoiding using the “instanceof” keyword
3
Assignment 3 Rubric
4
Comparing Apples and Oranges… abstract class Fruit { public Fruit() {} public abstract String getColor(); public abstract String getName(); }
5
Apples: class Apple extends Fruit { public Apple() {} public String getColor() { return "Red"; } public String getName() { return "Apple"; }};
6
Oranges: class Orange extends Fruit { public Orange() {} public String getColor() { return "Orange"; } public String getName() { return "Orange"; }};
7
Pears: class Pear extends Fruit { public Pear() {} public String getColor() { return "Green"; } public String getName() { return "Pear"; }};
8
Shopping for Fruit… public static void main(String args[]) { Random random=new Random(); ArrayList al=new ArrayList(); final int MAX_FRUIT=20; for (int i=0;i<MAX_FRUIT;i++) { int r=random.nextInt(3); switch (r) { case 0: { al.add(new Apple()); } break; case 1: { al.add(new Orange()); } break; case 2: { al.add(new Pear()); } break; }} // More on next slide...
9
We don’t like Oranges… for (int i=0;i<al.size();i++) { Fruit f=(Fruit)al.get(i); // We want to do something different for oranges... if (f instanceof Orange) // Why is this bad? { Orange orange=(Orange)f; System.out.println("What a terrible “ +orange.getName()+"! “+ “I'm done looking at fruit “+ “I'm done looking at fruit “+ “for today."); break;}else{ System.out.println("What a delicious “+ f.getColor()+" "+f.getName()+"..."); }}}}
10
ScreenShot
11
Revised Fruit… abstract class Fruit { public Fruit() {} public abstract String getColor(); public abstract String getName(); public boolean isTolerable() // (?) { return true; }}
12
Revised Orange: class Orange extends Fruit { public Orange() {} public String getColor() { return "Orange"; } public String getName() { return "Orange"; } public boolean isTolerable() { return false; }};
13
Revised FruitExample: for (int i=0;i<al.size();i++) { Fruit f=(Fruit)al.get(i); // What we’re really doing is doing something different // for intolerable fruit, not just oranges... if (f.isTolerable()) { System.out.println("What a terrible "+ f.getName()+ "! I'm done looking at fruit for today."); break;}else{ System.out.println("What a delicious "+ f.getColor()+" "+f.getName()+"..."); }}}}
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.