i nterfaces prepared by miss simab shahid ([email protected]) lecturer computer science and...

34
INTERFACES Prepared by Miss Simab Shahid ([email protected]) Lecturer computer Science and Software Engineering department, University of Hail Chapter 05

Upload: morris-french

Post on 26-Dec-2015

218 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACES

Prepared by

Miss Simab Shahid ([email protected])

Lecturer computer Science and Software Engineering department, University of Hail

Chapter 05

Page 2: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE An interface is something like an extreme case of an

abstract class An abstract class can have non abstract methods But interface must have abstract methods only.

However an interface is not a class It is a type that can be satisfied by any class that

implements the interface

2

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 3: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE SYNTAX

o The syntax for defining an interface is similar to that

of defining a class

Except the word interface is used in place of class

o An interface specifies a set of methods that any class

that implements the interface must have

3

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 4: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE EXAMPLE

interface FirstHelloInterface { 

void sayHello();

}

Important Point: Method declared in interface is implicitly public and abstract

4

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 5: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

IMPORTANT ABOUT INTERFACE We cant create object of an interface just like we cant create

object of an abstract class Because both the interface and abstract class have abstract

methods Rather we create object of a class that implements the

interface.

5

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 6: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

CLASS IMPLEMENTING AN INTERFACE If the class is not implementing all the abstract methods of

given interface, then the class must be declared as abstract class.

In the example below Cat is declared as abstract, coz it is not implementing the abstract method “void eat()”

interface Animal {

void talk( ); // abstract method

void eat( ); // abstract method

}

public abstract class Cat implements Animal {void talk( ) // class is implementing this method{

Sytem.out.println(“ Cat says Mao Mao”);}

abstract void eat( ); // abstract method

}6

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 7: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

CLASS IMPLEMENTING AN INTERFACE If the class is implementing all the abstract methods of given

interface, then the class will be declared as concrete class. In the example below Cat is declared as concrete class, because

it is implementing all the abstract methods of interface “Animal”

interface Animal {

void talk( ); // abstract method

void eat( ); // abstract method

}

public class Cat implements Animal {void talk( ) // class is implementing this method{

Sytem.out.println(“ Cat says Mao Mao…..”);}

void eat( ){

Sytem.out.println(“ Cat eats meat…..”);}

}

7

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 8: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE Interface contains method headings and constant definitions

only

interface shape {

       String  baseclass = "shap"; // constant      public void Draw(); // method heading

 }

8

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 9: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACES Interface contains neither instance variables nor any

complete method definitions

interface shap

 {

 public  String  baseclass;// wrong

Shap(){ } // wrong not allowed

 public void Draw()

{

System.out.println(“Implementation of Draw() Method”);//wrong

}

}9

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 10: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACES

Interface cannot be instantiated

interface A{

public void display( String s); }

public class InterfaceExample {

   public static void main( String args[] ) {

A objOfA = new A(); //WRONG: not allowed to create object of A(Interface)

}}

10

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 11: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE

o Interface variable is implicitly public, static and final

o Interface method is implicitly public and abstract (is not

implemented by this class)

o A class can implement one or more interfaces

o An interface can be implemented by several classes

o Interface name can be used as the type of a variable i.e

interface reference 11

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 12: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE

o An interface and all of its method headings should be

declared public

They cannot be given private, protected, or package

access

o When a class implements an interface, it must make all the

methods in the interface public

o 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 interface12

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 13: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE (EXAMPLES)interface Communicate{

int LOUD = 0;int SOFT = 1;int OFF = 2;void talk();void listen();

}class Telephone implements Communicate {

//implementation of talk() method of interface Communicatepublic void talk() { System.out.println(“Talk Method”); }

//implementation of listen() method of Communicate interface public void listen(){ System.out.println(“Listen Method”); }

//implementation of call() method ,call() method is not member of //Communicate interfacepublic void call( String number) { System.out.println(“Call Method”); }

} 13

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 14: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACE (EXAMPLE)class Professor implements Communicate{

public void talk() { System.out.println(“Talk Method”); }

public void listen() { System.out.println(“Listen Method”); } // other methods implemented

void Lecture( String topic) { } }

The keyword implements indicates that the class implements one or more interfaces.

14

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 15: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

EXERCISE(INTERFACE)

15

Sim

ab S

hahid

UO

H, G

irls Bra

nch

// What compile-time error generated for this program?

interface B{

void display();}class D0 { }

class D1 implements B{

public void display(){

System.out.println( "D1" ); }

}

class D2 implements B{

public void display() {

System.out.println( "D2" ); }

}

class InterfaceRefVariable{ public static void main( String [] args) {

B b = new D0(); b.display();b = new D1(); b.display();b = new D2(); b.display();

}}

Page 16: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

16

Sim

ab S

hahid

UO

H, G

irls Bra

nch

// Interface extends one or more interfaces

interface J { int i=200; int J1();}

interface K { double K1(); }

interface L extends J, K{ boolean L1();}

class I implements L { public int J1() {

return 4;}

public double K1() { return 7.98; } public boolean L1() { return true; }

}

class InterfaceInheritance{ public static void main( String[] args) {

I a = new I();System.out.println(a.i);System.out.println(a.J1());System.out.println(a.K1());System.out.println(a.L1());

} }

Page 17: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INTERFACEo The keyword extends is used to define an inheritance

relationship between interfaces. o An interface may directly extend multiple interfaces.

17

Sim

ab S

hahid

UO

H, G

irls Bra

nch

interface L1{

void f();void g();

}interface L2 extends L1{

void f();int g();

}

class CE{

public static void main(String [] args){

System.out.println( "Hello" ); }

}

The following program generates a compile-time error. Interface L1 declares f() and g(). Interface L2 declares the same except return type of g() is different. The compiler identifies it as an error.

Page 18: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INSTANCEOF OPERATOR

The instanceof operator is used to determine if an object is of a particular class or implements a specific interface.

o Syntax: varName instanceof type

o varName is an object reference variable

o type is the name of either a class or an interface The expression evaluates to true if varName is a type.

Otherwise, it evaluates to false.

18

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 19: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INSTANCEOF OPERATOR (EXAMPLE)

19

Sim

ab S

hahid

UO

H, G

irls Bra

nch

abstract class Fish{

abstract void display(); }abstract class SaltWtrFish extends Fish{

}abstract class FreshWtrFish extends Fish{}class Trout extends FreshWtrFish{

void display(){

System.out.println( "Trout" ); }

}class Tuna extends SaltWtrFish{

void display(){

System.out.println( "Tuna" );}

}

class InstantofOperator

{

public static void main( String[] arg)

{

Fish f[] = new Fish[3];

f[0] = new Trout();

f[1] = new Tuna();

f[2] = new Trout();

for(int j = 0; j < 3; j++)

if ( f[j] instanceof Trout )

f[j].display();

}

}

Output:

Trout

Trout

Page 20: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INSTANCEOF OPERATOR (EXAMPLE)

20

Sim

ab S

hahid

UO

H, G

irls Bra

nch

interface Vehicle{

void drive();}abstract class Mammal { }class Bear extends Mammal { }class Elephant extends Mammal implements Vehicle{

public void drive(){

System.out.println( "Elephant: Drive" );}

}class Horse extends Mammal implements Vehicle{

public void drive(){

System.out.println( "Horse:Drive" );}

}class Lion extends Mammal{ }

class InstantofInterface{

public static void main( String[] ar){

Mammal m[] = new Mammal[4];m[0]=new Elephant();m[1]=new Bear(); m[2]=new Horse();m[3]=new Lion();for( int j = 0; j < 4; j++){ if ( m[j] instanceof Vehicle) { Vehicle v =

(Vehicle)m[j]; v.drive(); }

}}

}Output:

Elephant: Drive

Horse: Drive

Page 21: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

EXERCISE (INSTANCEOF OPERATOR) Write a program that demonstrate the instanceof

operator. Declare interface I1 and I2. Interface I3 extends both of these interface. Also declare interface I4. Class X implements I3. Class W extends X and implements I4. Create an object of class W. Use the instanceof operator to test if object implements each of the interface and is of type X.

21

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 22: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

COMPARABLE INTERFACE

o Chapter 4 discussed the Merge Sort and the quick sort

algorithms, and examined a method for sorting an array into

increasing order

This code could be modified to sort into decreasing

order, or to sort strings instead

Each of these methods would be essentially the same,

but making each modification would be a nuisance.

o The only difference would be the types of values being

sorted, and the definition of the ordering.

o Using the Comparable interface could provide a single

sorting method that covers all these cases.22

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 23: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

COMPARABLE INTERFACE

o The Comparable interface is in the java.lang package, and

so is automatically available to any program.

o It has only the following method heading that must be

implemented:

public int compareTo(Object other);

o It is the programmer's responsibility to follow the semantics

of the Comparable interface when implementing it.

23

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 24: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

import java.lang ;

public class Employee implements Comparable {

 int EmpID;String Ename;double Sal;

 public Employee( String Ename, double Sal) {

EmpID ++;this. Ename =Ename;this. Sal = Sal;

}

public int compareTo(Object o1) {if (this.Sal == ((Employee) o1).Sal) { return 0; }

else if ((this.Sal) > ((Employee) o1).Sal) { return 1; }elsereturn -1;}

}24

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 25: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

Class Test

{

public static void main( String[] arg)

{

Employee Obj1 = new Employee(“Clary ” , 4000 );

Employee Obj2 = new Employee(“Amna ” , 6000 );

int returnValue = Obj2. compareTo(Obj1)

if (returnValue ==0 )

System.out.println(“ Both the employees have equal salaries ”);

if (returnValue >0 )

System.out.println(“Employee 1 salary is high ”);

if (returnValue < 0 )

System.out.println(“Employee 2 salary is high ”);

}

}

25

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 26: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

COMPARABLE INTERFACE

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

o If the parameter other is not of the same type as the class

being defined, then a ClassCastException should be

thrown.

26

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 27: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INNER CLASSES Inner classes are classes defined within other classes. The class that includes the inner class is called the

outer class.

public class University {

String name;

String city;

private class Student { private String ID ; private int Age ; private String Grade ;

}

}o Here University is Outer class & Student is Inner class

27

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 28: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

PLACEMENT OF INNER CLASS IN OUTER CLASS

o There is no particular location where the definition of the

inner class (or classes) must be place within the outer class.

o Placing it first or last, however, will guarantee that it is easy

to find.

28

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 29: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

public class Person {

private double age;

Person() {

age = 0.0;

}

public void setAge( double age)

{

this.age = age;

}

//Good to writeInner class at the //End, because it is easy to find it

public class Name{String f_name;String m_name;String l_name;

}

}

29

Sim

ab S

hahid

UO

H, G

irls Bra

nch

public class Person {

//Good to write Inner class in the start, //because it is easy to find it

public class Name{

String f_name;

String m_name;

String l_name;

}

private double age;

Person() {

age = 0.0;

}

public void setAge( double age)

{

this.age = age;

}

}

Example 01 Example 02

Page 30: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

30

Sim

ab S

hahid

UO

H, G

irls Bra

nch

public class Person {

private double age;

Person() {

age = 0.0;

}

//Not Good to write Inner class in the middle, because it is difficult to find it

public class Name{String f_name;String m_name;String l_name;

}

public void setAge( double age)

{

this.age = age;

}

}

Example 03

Page 31: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INNER CLASS An inner class definition is a member of the outer class

in the same way that the instance variables and methods of the outer class are members.

In the previous example the class Person has three members

private variable “age” public function setAge() And inner class Name.

An inner class is local to the outer class definition.

o The name of an inner class may be reused for

something else outside the outer class definition.

o If the inner class is private, then the inner class cannot

be accessed by name outside the definition of the outer

class.

31

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 32: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

USES OF INNER CLASSES

o Within the definition of a method of an inner class:

It is legal to reference a private instance variable of the outer class

It is legal to invoke a private method of the outer class

o Within the definition of a method of the outer class

It is legal to reference a private instance variable of the inner class on an object of the inner class

It is legal to invoke a (non static) method of the inner class as long as an object of the inner class is used as a calling object

o Within the definition of the inner or outer classes, the modifiers public and private are equivalent.

32

Sim

ab S

hahid

UO

H, G

irls Bra

nch

Page 33: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

INNER CLASSES EXAMPLE

33

Sim

ab S

hahid

UO

H, G

irls Bra

nch

public class University{

private class Student { private String ID ; private int Age ; private String Grade ; public Student (String I, int A, String G) { this.ID = I ; this.Age = A ; this.Grade = G ; } public String getGrade( ) { return Grade ; } public String getStudentInfo( ) { return ID +” ” +Age; } } // end of inner class

private Student S ;

public String getInfo( ) { return S.Grade + “ “ + S.getStudentInfo() ;

} } // end of outerclass

Page 34: I NTERFACES Prepared by Miss Simab Shahid (s.shahid@uoh.edu.sa) Lecturer computer Science and Software Engineering department, University of Hail Chapter

ADVANTAGES INNER CLASSES

o There are two main advantages to inner classes.

They can make the outer class more self-contained

since they are defined inside a class.

Both of their methods have access to each other's

private methods and instance variables.

o Using an inner class as a helping class is one of the

most useful applications of inner classes.

If used as a helping class, an inner class should be

marked private.34

Sim

ab S

hahid

UO

H, G

irls Bra

nch