CMSC 202 Interfaces. 11/20102 Classes and Methods When a class defines its methods as public, it describes how the class user interacts with the method.

Slides:



Advertisements
Similar presentations
Slides prepared by Rose Williams, Binghamton University Chapter 13 Interfaces and Inner Classes.
Advertisements

Chapter 13 Interfaces and Inner Classes Slides prepared by Rose Williams, Binghamton University Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Slides prepared by Rose Williams, Binghamton University Chapter 13 Interfaces and Inner Classes.
Java Collections. Lecture Objectives To understand the concepts of Java collections To be able to implement Java programs based on Collections.
Chapter 14 Generics and the ArrayList Class Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
Unit 031 Interfaces What is an Interface? Interface Declaration Syntax Implementing Interfaces Using Interfaces as Types Interfaces and Inheritance Interfaces.
1 Introduction to Searching and Sorting Comparable Interface -Reading p Comparator Interface.
Slides prepared by Rose Williams, Binghamton University Chapter 16 Collections and Iterators.
Slides prepared by Rose Williams, Binghamton University Chapter 16 Collections and Iterators.
Introduction to Searching and Sorting
CS102--Object Oriented Programming Lecture 15: Interfaces Copyright © 2008 Xiaoyan Li.
I NTERFACES Prepared by Miss Simab Shahid Lecturer computer Science and Software Engineering department, University of Hail Chapter.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Taken from slides of Starting Out with C++ Early Objects Seventh Edition.
Polymorphism & Interfaces
Writing Classes (Chapter 4)
CMSC 202 Inheritance II. Version 10/102 Inherited Constructors? An Employee constructor cannot be used to create HourlyEmployee objects. Why not? We must.
CMSC 202 Exceptions. Aug 7, Error Handling In the ideal world, all errors would occur when your code is compiled. That won’t happen. Errors which.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
CMSC 202 Generics. Nov Generalized Code One goal of OOP is to provide the ability to write reusable, generalized code. Polymorphic code using.
Inheritance - Polymorphism ITI 1121 Nour El Kadri.
Programming With Java ICS201 University Of Hail1 Chapter 13 Interfaces.
Comp 249 Programming Methodology Chapter 13 Interfaces & Inner Classes Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia.
Data Structures Using Java1 Chapter 2 Inheritance and Exception Handling.
Chapter 3 Inheritance and Polymorphism Goals: 1.Superclasses and subclasses 2.Inheritance Hierarchy 3.Polymorphism 4.Type Compatibility 5.Abstract Classes.
Aug 9, CMSC 202 ArrayList. Aug 9, What’s an Array List ArrayList is  a class in the standard Java libraries that can hold any type of object.
Comp 248 Introduction to Programming Chapter 4 & 5 Defining Classes Part B Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia.
COP INTERMEDIATE JAVA Designing Classes. Class Template or blueprint for creating objects. Their definition includes the list of properties (fields)
Programming With Java ICS201 University Of Ha’il1 Chapter 7 Inheritance.
CMSC 202 Inheritance II. Version 10/092 Inherited Constructors? An Employee constructor cannot be used to create HourlyEmployee objects. Why not? We must.
Interfaces An interface is like an extreme case of an abstract class – However, an interface is not a class – It is a type that can be satisfied by any.
Interfaces and Inner Classes
Java Programming, Second Edition Chapter Twelve Advanced Inheritance Concepts.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Inheritance in Java. Access Specifiers private keywordprivate keyword –Used for most instance variables –private variables and methods are accessible.
Classes, Interfaces and Packages
Slides prepared by Rose Williams, Binghamton University Chapter 16 Collections and Iterators.
CMSC 202 Polymorphism. 10/20102 Topics Binding (early and late) Upcasting and downcasting Extensibility The final modifier with  methods  classes.
UNIT-3 Interfaces & Packages. What is an Interface? An interface is similar to an abstract class with the following exceptions: All methods defined in.
Chapter 13 Interfaces and Inner Classes Slides prepared by Rose Williams, Binghamton University Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
© 2006 Pearson Addison-Wesley. All rights reserved 1-1 Chapter 1 Review of Java Fundamentals.
Terms and Rules II Professor Evan Korth New York University (All rights reserved)
POLYMORPHISM Chapter 6. Chapter Polymorphism  Polymorphism concept  Abstract classes and methods  Method overriding  Concrete sub classes and.
Copyright 2006 Pearson Addison-Wesley, 2008, 2012 Joey Paquet 1 Concordia University Department of Computer Science and Software Engineering SOEN6441 –
CMSC 202 Polymorphism 2 nd Lecture. Aug 6, Topics Constructors and polymorphism The clone method Abstract methods Abstract classes.
Slides prepared by Rose Williams, Binghamton University ICS201 Lecture 7 : Interfaces King Fahd University of Petroleum & Minerals College of Computer.
Lecture 5:Interfaces and Abstract Classes Michael Hsu CSULA.
Interfaces CMSC 202. Public Interfaces Objects define their interaction with the outside world through the their public interface. A class' public interface.
Lecture 6:Interfaces and Abstract Classes Michael Hsu CSULA.
Lecture 5:Interfaces and Abstract Classes
Polymorphism 2nd Lecture
Lecture 12 Inheritance.
Polymorphism 2nd Lecture
Comp 249 Programming Methodology
Inheritance 2nd Lecture
Polymorphism 2nd Lecture
Interface.
CMSC 202 Interfaces.
CMSC 202 Polymorphism.
Inheritance 2nd Lecture
CSE 1030: Implementing GUI Mark Shtern.
Interfaces and Inner Classes
Inheritance Inheritance is a fundamental Object Oriented concept
Inheritance 2nd Lecture
Java Inheritance.
مظفر بگ محمدی دانشگاه ایلام
CMSC 202 Interfaces.
TCSS 143, Autumn 2004 Lecture Notes
CMSC 202 Inheritance II.
CMSC 202 Exceptions.
CMSC 202 Interfaces.
Presentation transcript:

CMSC 202 Interfaces

11/20102 Classes and Methods When a class defines its methods as public, it describes how the class user interacts with the method. These public methods form the class’ interface. An abstract class contains one or more methods with only an interface – no method body is provided. Java allows us to take this concept one step further.

11/20103 Interfaces An interface is something like an extreme abstract class. All of the methods in an interface are abstract – they have no implementations. An interface has no instance variables. Only defines methods. is NOT a class. is a type that can be satisfied by any class that implements the interface

11/20104 Interfaces The syntax for defining an interface is similar to that of defining a class Except the word interface is used in place of class An interface specifies a set of methods that any class that implements the interface must have It contains method headings (and optionally static final constant definitions) only It contains no instance variables nor any complete method definitions Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/20105 Interfaces An interface and all of its method headings should be declared public They cannot be given private, protected, or package access When a class implements an interface, it must make all the methods in the interface public. Because an interface is a type, a method may be written with a parameter of an interface type That parameter will accept as an argument any class that implements the interface Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/20106 Implementing an Interface To create a class that implements all the methods defined in an interface, use the keyword implements. Whereas interface defines the headings for methods that must be defined, a class that implements the interface defines how the methods work.

11/20107 The Animal Interface public interface Animal { public void eat( ); } Yes, animals do more than eat, but we’re trying to make this a simple example.

11/20108 Interfaces To implement an interface, a concrete class must do two things: 1. It must include the phrase implements Interface_Name at the start of the class definition – If more than one interface is implemented, each is listed, separated by commas 2. The class must implement all the method headings listed in the definition(s) of the interface(s) Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/20109 Implementing Animal // Lion and Snake implement the required eat( ) method public class Lion implements Animal { public void eat() { System.out.println("Lions Devour"); } } public class Snake implements Animal { public void eat() { System.out.println( "Snakes swallow whole"); } }

11/ Implementing Animal // Dog implements the required eat( ) method and has // some of its own methods and instance variables public class Dog implements Animal { private String name; Dog(String newName) {name = newName;} public void eat() {System.out.println("Dog chews a bone");} } // Poodle is derived from Dog, so it inherits eat( ) // Adds a method of its own public class Poodle extends Dog { Poodle( String name ) { super(name); } // call Dog constructor public String toString( ) { return "Poodle"; } }

Implementing Animal // Using classes that implement Animal public class Jungle { public static void feed( Animal a ) { a.eat(); } public static void main( String[] args ){ Animal[ ] animals = { new Lion( ), new Poodle( "Fluffy“ ), new Dog( "Max“ ), new Snake( ) }; for (int i = 0; i < animals.length; i++) feed( animals[ i ] ); } } // --- Output Lions Devour Dog chews a bone Snakes swallow whole 11/201011

11/ Extending an Interface An new interface can add method definitions to an existing interface by extending the old interface TiredAnimal extends Animal { public void sleep( ); } The TiredAnimal interface includes both eat( ) and sleep( );

11/ Interface Semantics Are Not Enforced When a class implements an interface, the compiler and run-time system check the syntax of the interface and its implementation However, neither checks that the body of an interface is consistent with its intended meaning Required semantics for an interface are normally added to the documentation for an interface It then becomes the responsibility of each programmer implementing the interface to follow the semantics If the method body does not satisfy the specified semantics, then software written for classes that implement the interface may not work correctly Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/ The Comparable Interface The Comparable interface is in the java.lang package, and so is automatically available to any program It has only the following method heading that must be implemented (note the Object parameter) public int compareTo(Object other); It is the programmer's responsibility to follow the semantics of the Comparable interface when implementing it When implementing compareTo, you would of course overload it by using an appropriate parameter type Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/ The Comparable Interface Semantics The method compareTo must return A negative number if the calling object "comes before" the parameter other A zero if the calling object "equals" the parameter other A positive number if the calling object "comes after" the parameter other If the parameter other is not of the same type as the class being defined, then a ClassCastException should be thrown Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/ The Comparable Interface Semantics Almost any reasonable notion of "comes before" is acceptable In particular, all of the standard less-than relations on numbers and lexicographic ordering on strings are suitable The relationship "comes after" is just the reverse of "comes before" Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/ compareTo for Person public class Person implements Comparable { private String name;... public int compareTo( Object obj ) { Person p = (Person)obj; return name.compareTo(p.name); }.... } If obj is not a Person object a ClassCastException will be thrown Comparing the names using String’s compareTo method

11/ Using Comparable // prints the index of the smallest Integer in an array // Note use of Integer, not int public class FindSmallest { public static void main( String[ ] args) { // find the smallest Integer in an array // Integer (implements Comparable ) int index = 0;// index of smallest value Integer[ ] values = { new Integer(144), new Integer(200), new Integer(99), new Integer(42), new Integer(132) }; for (int i = 1; i < values.length; i++) { if ( values[ i ].compareTo( values[ index ] ) < 0 ) index = i; } System.out.println("Index of smallest value is “ + index); }

11/ Implementing Multiple Interfaces Recall the Animal interface from earlier public interface Animal { public void eat( ); } Define the Cat interface public interface Cat { void purr( );// public by default; } // since a Lion is an Animal and a Cat, Lion may wish // to implement both interfaces public class Lion implements Animal, Cat { public void eat( ) {System.out.println(“Big Gulps”);} public void purr( ) {System.out.println(“ROOOAAAR!”);} } Just separate the Interface names with a comma

11/ Inconsistent Interfaces In Java, a class can have only one base class This prevents any inconsistencies arising from different definitions having the same method heading In addition, a class may implement any number of interfaces Since interfaces do not have method bodies, the above problem cannot arise However, there are other types of inconsistencies that can arise Copyright © 2008 Pearson Addison-Wesley. All rights reserved

11/ Inconsistent Interfaces When a class implements two interfaces: Inconsistency will occur if the interfaces contain methods with the same name but different return types If a class definition implements two inconsistent interfaces, then that is an error, and the class definition is illegal Copyright © 2008 Pearson Addison-Wesley. All rights reserved