Upload
morris-french
View
215
Download
2
Embed Size (px)
Citation preview
INTERFACES
Prepared by
Miss Simab Shahid ([email protected])
Lecturer computer Science and Software Engineering department, University of Hail
Chapter 05
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
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
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
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
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
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
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
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
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
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
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
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
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
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();
}}
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());
} }
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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