Drew University1 Interfaces and Polymorphism 9.1 Developing Reusable Solutions 9.2 Converting between Types 9.3 Polymorphism Common Error 9.1 Advanced.

Slides:



Advertisements
Similar presentations
AP Computer Science TOPICS TO DISCUSS.equals() == instanceof operator compareTo Interfaces Abstract Classes.
Advertisements

METHOD OVERRIDING 1.Sub class can override the methods defined by the super class. 2.Overridden Methods in the sub classes should have same name, same.
Chapter 11 – Interfaces and Polymorphism. Chapter Goals Learn about interfaces Learn about interfaces Convert between class and interface references Convert.
Interfaces and polymorphism Chapter 9. Interfaces  Used to express operations common to more than one purpose.  Example: You want to find the maximum.
Interfaces and Polymorphism Lesson - 8. Objectives Interfaces Supertype and subtype references Polymorphism Inner classes.
Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved. Chapter Nine: Interfaces and Polymorphism.
Computer Science A 9: 3/11. Inheritance Today: Inheritance (JC – CCJ ) I have to leave at 11am (but you can stay)
What is an Interface?? An interface is a ‘container’ which contains ONLY abstract methods. public interface Capitalizable { public abstract String outCaps()
Big Java by Cay Horstmann Copyright © 2008 by John Wiley & Sons. All rights reserved. Interfaces and Polymorphism.
Chapter 8 – Interfaces and Polymorphism Big Java by Cay Horstmann Copyright © 2009 by John Wiley & Sons. All rights reserved.
ACM/JETT Workshop - August 4-5, :Inheritance and Interfaces.
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
Interfaces. Lecture Objectives To learn about interfaces To be able to convert between class and interface references To appreciate how interfaces can.
Chapter 9 Interfaces and Polymorphism. Chapter Goals To learn about interfaces To be able to convert between class and interface references To understand.
Interfaces. Lecture Objectives To learn about interfaces To be able to convert between class and interface references To appreciate how interfaces can.
Polymorphism. Lecture Objectives To understand the concept of polymorphism To understand the concept of static or early binding To understand the concept.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter N - 1 Chapter 13 Polymorphism is-a relationships Interfaces.
Chapter 9  Interfaces and Polymorphism 1 Chapter 9 Interfaces and Polymorphism.
Interfaces besides classes, Java recognizes another type, an interface interface is used to completely shield off all implementation from the programmer.
Vocabulary Key Terms polymorphism - Selecting a method among many methods that have the same name. subclass - A class that inherits variables and methods.
Object Oriented Programming, Interfaces, Callbacks Delegates and Events Dr. Mike Spann
1 Inheritance and Polymorphism Chapter 9. 2 Polymorphism, Dynamic Binding and Generic Programming public class Test { public static void main(String[]
Chapter 6 Class Inheritance F Superclasses and Subclasses F Keywords: super F Overriding methods F The Object Class F Modifiers: protected, final and abstract.
CISC6795: Spring Object-Oriented Programming: Polymorphism.
APCS Java AB 2004 Review of CS1 and CS2 Review for AP test #1 Sources: 2003 Workshop notes from Chris Nevison (Colgate University) AP Study Guide to go.
Inheritance and Polymorphism Daniel Liang, Introduction to Java Programming.
Interfaces and Polymorphism 9.1 Using Interfaces for Code Reuse Defining an Interface implementing an interface 9.2 Converting between Class.
What is an Interface?? An interface is a ‘class’ which contains ONLY abstract methods. public interface Capitalizable { public abstract String outCaps()
Inheritance - Polymorphism ITI 1121 Nour El Kadri.
INTERFACES More OO Concepts. Interface Topics Using an interface Interface details –syntax –restrictions Create your own interface Remember polymorphism.
Chapter 9 Interfaces and Polymorphism. Chapter Goals To learn about interfaces To be able to convert between class and interface references To understand.
Polymorphism. 3 main programming mechanisms that constitute OOP: 1. Encapsulation 2. Inheritance 3. Polymorphism.
Copyright © 2014 by John Wiley & Sons. All rights reserved.1 Chapter 10 - Interfaces.
JAVA Classes Review. Definitions Class – a description of the attributes and behavior of a set of computational objects Constructor – a method that is.
Chapter 3 Inheritance and Polymorphism Goals: 1.Superclasses and subclasses 2.Inheritance Hierarchy 3.Polymorphism 4.Type Compatibility 5.Abstract Classes.
1 final (the keyword, not the exam). 2 Motivation Suppose we’ve defined an Employee class, and we don’t want someone to come along and muck it up  E.g.,
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Chapter 9 Interfaces and Polymorphism. Chapter Goals To learn about interfaces To be able to convert between class and interface references To understand.
Fall 2006Adapted from Java Concepts Companion Slides1 Interfaces and Polymorphism Advanced Programming ICOM 4015 Lecture 10 Reading: Java Concepts Chapter.
CHAPTER 9 INTERFACES AND POLYMORPHISM Chapter Goals: –To learn about interfaces –To be able to convert between supertype and subtype references –To understand.
Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.
CHAPTER 9 INTERFACES AND POLYMORPHISM. CHAPTER GOALS To learn about interfaces To be able to convert between supertype and subtype references To understand.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 9 Inheritance and.
Object Oriented Programming
10 Polymorphism. 2 Contents Defining Polymorphism Method Overloading Method Overriding Early Binding and Late Binding Implementing Polymorphism.
1 COSC2007 Data Structures II Chapter 9 Class Relationships.
Lecture Notes – Inheritance and Polymorphism (Ch 9-10) Yonglei Tao.
Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses  Keywords: super F Overriding methods  The Object Class  Modifiers: protected,
Inheritance and Class Hierarchies Chapter 3. Chapter 3: Inheritance and Class Hierarchies2 Chapter Objectives To understand inheritance and how it facilitates.
Inheritance and Class Hierarchies Chapter 3. Chapter Objectives  To understand inheritance and how it facilitates code reuse  To understand how Java.
1 Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses  Keywords: super F Overriding methods  The Object Class  Modifiers: protected,
Inheritance and Polymorphism
COP INTERMEDIATE JAVA Inheritance, Polymorphism, Interfaces.
COMPUTER SCIENCE & TECHNOLOGY DEGREE PROGRAMME FACULTY OF SCIENCE & TECHNOLOGY UNIVERSITY OF UVA WELLASSA ‏ Properties of Object Oriented Programming.
Java Programming: Guided Learning with Early Objects Chapter 9 Inheritance and Polymorphism.
EE2E1. JAVA Programming Lecture 4 Interfaces. Contents Interfaces – introduction Interfaces – introduction Example – generic sorting Example – generic.
Class Inheritance Part II: Overriding and Polymorphism Corresponds with Chapter 10.
Modern Programming Tools And Techniques-I
Web Design & Development Lecture 9
Chapter Goals To be able to declare and use interface types
Inheritance and Polymorphism
Lecture Notes – Interface and Polymorphism (Ch 9-10)
Interfaces and Polymorphism
Chapter 11 – Interfaces and Polymorphism
Chapter 9 Inheritance and Polymorphism
Chapter 11 Interfaces and Polymorphism
Chapter 8 Class Inheritance and Interfaces
Object Oriented Programming
Chapter 11 Inheritance and Encapsulation and Polymorphism
Computer Science II for Majors
Presentation transcript:

Drew University1 Interfaces and Polymorphism 9.1 Developing Reusable Solutions 9.2 Converting between Types 9.3 Polymorphism Common Error 9.1 Advanced Topic 9.1

Drew University2 Interface A Java interface declare a set of methods and their signatures. Unlike a class, it provides no implementation. To realize ( implement ) an interface, a class must supply all the methods that the interface requires.

Drew University3 public interface Comparable Method Summary intcompareTo(Object o)compareToObject Compares this object with the specified object for order. If you want your class to be Comparable, it needs a compareTo method that takes in an Object and returns an integer.

Drew University4 Example String implements Comparable We can compare two strings by invoking the String method compareTo. String makes a promise to "define" what is means to compare two String objects. String s1 = ; String s2 = ; if (s2.compareTo(s1))…….

Drew University5 Examples public class Circle implements Comparable { public int compareTo(Object o) // Circle must define what it means to compare two Circle objects. } If we want to compare two circles, we must supply the method compareTo.

Drew University6 Examples public class Circle implements Comparable { public int compareTo(Object o) { Circle c = (Circle) o; if (this.equals(c)) return 0; if (this.radius < c.radius) return -1; return 1; } … // we have already defined equals for Circle. What if equals is not defined for Circle ? } this is not required here.

Drew University7 Examples public class Student implements Comparable { public int compareTo(Object o) { } … } How do you compare students?

Drew University8 Examples public class Student implements Comparable { public int compareTo(Object o) { Student s = (Student) o; if (equals(s)) return 0; if (gpa < s.gpa) return -1; return 1; } … }

Drew University9 An interface….. "To be useful, an interface must be realized (implemented) by at least one Java class." – Rick Mercer A class may implement MANY interfaces. I’m a Person, I’m a Graduate, I’m an Achiever..

Drew University10 A picture (BlueJ) > fly() SkiJumper fly() train() compareTo() Bird fly() findHome() Airplane fly() Engine > train()

Drew University11 Interfaces SHOULD NOT GROW! Classes have "contracts" with an interface. If the interface changes, all classes that realize the interface are affected! Interfaces allow for encapsulating similar behaviors between unrelated classes.

Drew University12 Interface Contains constants, methods or both. NO implementations. No instance variables.

Drew University13 Using interfaces Define a set of methods as an interface. Classes that realize the interface must support all the methods of the interface. Create classes that implement those methods. Compiler verifies that method calls are valid.

Drew University14 Interface Example public interface Flier { void fly(); }

Drew University15 Interface declarations: All methods in an interface are public. The methods in the interface are not declared as public because they are public by default. When implementing the methods of the interface in a class, include the keyword public.

Drew University16 Classes realizing Flier public class Bird implements Flier { public void fly() { System.out.println("Using my wings to fly"); } ================================================================== public class Airplane implements Flier { public void fly() { System.out.println("Using my jet engines to fly"); } ================================================================== public class SkiJumper implements Flier, Athlete, Comparable { public void fly() { System.out.println("Using skis to take me into the air"); }

Drew University17 Abstract An interface is ABSTRACT. You can’t create an object of that type.

Drew University18 Interfaces Cannot be instantiated. Flier f = new Flier();NO You can use interface name as variable type; variable can refer to an object of any class that implements the interface. Flier b = new Bird();OK Flier s = new SkiJumper();OK

Drew University19 Using interfaces Interfaces define types (sets of methods). A variable of type Flier must refer to an object that implements methods defined by Flier, not necessarily to an instance of Flier. Actual method invoked is defined by the object’s class, at run-time. (dynamic binding)

Drew University20 polymorphism… Dynamic Binding (overriding): Behavior can vary depending on the actual type of an object. Occurs at runtime. Early Binding (overloading) occurs at compile time.

Drew University21 polymorphism "In the object-oriented world, polymorphism refers to the ability of different kinds of objects to respond differently to the same commands, provided that the objects belong to classes with a common ancestor." K.N.King

Drew University22 Again… Early binding of methods occurs if the compiler selects a method from several possible candidates as with overloaded methods. Late binding occurs if the method selection takes place when the program runs.

Drew University23 The importance of IS-A You can convert from a class type to an interface type if the class realizes the interface. String str = "word"; Comparable p = str;// OK You need a cast to convert from an interface type to a class type. String str = "word"; Comparable p = str; String t = p; // NO

Drew University24 The importance of IS-A You can convert from a class type to an interface type if the class realizes the interface. String str = "word"; Comparable p = str;// OK You need a cast to convert from an interface type to a class type. String str = "word"; Comparable p = str; String t = (String)p; // OK

Drew University25 instanceof operator The instanceof operator tests whether an object belongs to a particular type. What happens? Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier instanceof SkiJumper) System.out.println("That's right."); else System.out.println("NOT");

Drew University26 instanceof operator The instanceof operator tests whether an object belongs to a particular type. What happens? Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier instanceof SkiJumper) System.out.println("That's right."); else System.out.println("NOT"); That's right.

Drew University27 instanceof operator The instanceof operator tests whether an object belongs to a particular type. What happens? Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier instanceof Flier) System.out.println("That's right."); else System.out.println("NOT");

Drew University28 instanceof operator The instanceof operator tests whether an object belongs to a particular type. Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier instanceof Flier) System.out.println("That's right."); else System.out.println("NOT"); That's right.

Drew University29 instanceof operator The instanceof operator tests whether an object belongs to a particular type. What happens? Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier2 instanceof Flier) System.out.println("That's right."); else System.out.println("NOT");

Drew University30 instanceof operator The instanceof operator tests whether an object belongs to a particular type. Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier2 instanceof Flier) System.out.println("That's right."); else System.out.println("NOT"); That's right.

Drew University31 instanceof operator The instanceof operator tests whether an object belongs to a particular type. What happens? Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier2 instanceof SkiJumper) System.out.println("That's right."); else System.out.println("NOT");

Drew University32 instanceof operator The instanceof operator tests whether an object belongs to a particular type. Flier aFlier = new SkiJumper("Joe","Smith"); Flier aFlier2 = new Airplane(); if (aFlier2 instanceof SkiJumper) System.out.println("That's right."); else System.out.println("NOT"); NOT

Drew University33 Polymorphism is NOT Overloading. Method signature refers to method name and parameters Overloading means methods have different signatures(different parameters). Overloading usually occurs in same class. BankAccount has two constructors. One of the constructors has one double parameter. One of the constructors has no parameters. The compiler chooses the appropriate method.

Drew University34 Polymorphism The actual type of the object determines which method is to be called. This is late binding (dynamic binding). The virtual machine, not the compiler, selects the appropriate method at run time.

Drew University35 Consider the following DataSet class. //Computes the average of a set of // data values. public class DataSet { public DataSet() { sum = 0; count = 0; maximum = 0; } //Adds a data value to the data // set public void add(double x) { sum = sum + x; if (count == 0 || maximum < x) maximum = x; count++; } //Returns the average of the added data. public double getAverage() { if (count == 0) return 0; else return sum / count; } //Returns the largest of the added data // or 0 if no data has been added public double getMaximum() { return maximum; } private double sum; private double maximum; private int count; }

Drew University36 Concerns Suppose we wanted to find the BankAccount with the highest balance? Suppose we wanted to find the Coin with the highest value? Suppose we wanted to find the Student with the highest gpa?

Drew University37 Solution: //Computes the average of a set of // data values. public class DataSet { public DataSet() { sum = 0; count = 0; maximum = 0; } //Adds a data value to the data // set public void add(BankAccount x) { sum = sum + x.getBalance(); if (count == 0 || maximum.getBalance() < x.getBalance()) maximum = x; count++; } //Returns the average of the added data. public double getAverage() { if (count == 0) return 0; else return sum / count; } //Returns the largest of the added data // or 0 if no data has been added public BankAccount getMaximum() { return maximum; } private double sum; private BankAccount maximum; private int count; }

Drew University38 Solution: //Computes the average of a set of // data values. public class DataSet { public DataSet() { sum = 0; count = 0; maximum = 0; } //Adds a data value to the data // set public void add(Coin x) { sum = sum + x.getValue(); if (count == 0 || maximum.getValue () < x.getValue ()) maximum = x; count++; } //Returns the average of the added data. public double getAverage() { if (count == 0) return 0; else return sum / count; } //Returns the largest of the added data // or 0 if no data has been added public Coin getMaximum() { return maximum; } private double sum; private Coin maximum; private int count; }

Drew University39 Solution: //Computes the average of a set of // data values. public class DataSet { public DataSet() { sum = 0; count = 0; maximum = 0; } //Adds a data value to the data // set public void add(Student x) { sum = sum + x.getGpa(); if (count == 0 || maximum.getGpa () < x.getGpa ()) maximum = x; count++; } //Returns the average of the added data. public double getAverage() { if (count == 0) return 0; else return sum / count; } //Returns the largest of the added data // or 0 if no data has been added public Student getMaximum() { return maximum; } private double sum; private Student maximum; private int count; }

Drew University40 Hmmmmm… Clearly the mechanics of analyzing the data is the same in ALL cases but the details of measurement are different. BankAccount : balance Coin: value Student: gpa

Drew University41 Suppose we consider the following: public interface Measurable { double getMeasure(); }

Drew University42 Solution: //Computes the average of a set of // data values. public class DataSet { public DataSet() { sum = 0; count = 0; maximum = 0; } //Adds a data value to the data // set public void add(Measurable x) { sum = sum + x.getMeasure(); if (count == 0 || maximum.getMeasure () < x.getMeasure ()) maximum = x; count++; } //Returns the average of the added data. public double getAverage() { if (count == 0) return 0; else return sum / count; } //Returns the largest of the added data // or 0 if no data has been added public Measurable getMaximum() { return maximum; } private double sum; private Measurable maximum; private int count; }

Drew University43 And… public class BankAccount implements Measurable {..... public double getMeasure() { return balance; }

Drew University44 Test class public class DataSetTest { public static void main(String[] args) { DataSet bankData = new DataSet(); bankData.add(new BankAccount(0)); bankData.add(new BankAccount(10000)); bankData.add(new BankAccount(2000)); System.out.println("Average balance = " + bankData.getAverage()); Measurable max = bankData.getMaximum(); System.out.println("Highest balance = " + max.getMeasure()); DataSet coinData = new DataSet(); coinData.add(new Coin(0.25, "quarter")); coinData.add(new Coin(0.1, "dime")); coinData.add(new Coin(0.05, "nickel")); System.out.println("Average coin value = " + coinData.getAverage()); max = coinData.getMaximum(); String name = ((Coin)max).getName(); System.out.println(name + " has the highest coin value of " + max.getMeasure()); }

Drew University45 And… public class Coin implements Measurable {..... public double getMeasure() { return value; }

Drew University46 And… public class Student implements Measurable {..... public double getMeasure() { return gpa; }