SlideShare a Scribd company logo
CHAPTER 9
ABSTRACT CLASS & INTERFACE
Oum Saokosal, Chief of Computer Science
National Polytechnic Institute of Cambodia
Tel: (855)-12-252-752
E-mail: oum_saokosal@yahoo.com
1
INTERFACE
2
Interface
• What is interface?
• How to define interface?
• How to use interface?
• Why not use abstract class instead of interface?
• UML of interface
• Importance of interface
• Different between interface and abstract class
• Notes for interface
• Class Design Guidline
• Last words
3
What is Interface?
• In many ways, Interface is very similar to abstract class
but it marks with interface keyword instead of
abstract class keyword.
public interface InterfaceName {
}
• Unlike abstract class which can also contain nonabstract
methods, interface contain ONLY abstract methods and
constants.
4
How to define interface?
• Defining an interface:
<modifier> interface InterfaceName{
/* Constant declarations */
/* Method signatures */
}
• E.g:
public interface Moveable{
final int MAX_MOVE = 20;
final int MIN_MOVE = 1;
public void move();
}
5
How to use interface? (1)
• Use implements keyword to implement an interface.
• E.g. Assume we have King implementing Moveable.
public interface Moveable{
final int MAX_MOVE = 20;
final int MIN_MOVE = 1;
public String howToMove();
}
public class King implements Moveable{
@Override
public String howToMove(){
return “One step to every direction”;
}
}
6
How to use interface? (2)
You can do this also:
public class Test extends JFrame implements Moveable{
public Test(){
setTitle(howToMove());
setSize(500, 200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public String howToMove(){
return “One step to every direction”;
}
}
7
Why not use abstract class instead of
interface? (1)
8
Hey Rabbit! Today’s class is about
interface. The word “interface” here
means GUI, Graphical User Interface?
Not at all, Ball. GUI is GUI.
Interface here is a kind of
ideas in OOP which is similar to
abstract class. I’ll tell ya what...
Why not use abstract class instead of
interface? (2)
CB: OK! Let me start my question. What is interface?
SR: Just like I said. Interface is a kind of ideas in OOP
which is similar to abstract class.
CB: Can you review what the abstract class is?
SR: Come on... You’ve learned it, haven’t you? You should
know it...!
CB: Well, but ... you know...
SR: - OK, no but. I can tell some...
- Actually, the most important thing of abstract class
is just to GUARANTEE that its closed subclasses
MUST override its abstract methods.
9
Why not use abstract class instead of
interface? (3)
CB: Why guarantee?
SR: Because of polymorphism. Do you remember the
form of polymorphism.
CR: Like this:
Vehicle v = new Jeep();
v.getGun();
SR: And what wrong if Jeep didn’t override
getGun() method?
CR: Oh I see. Then it will call getGun() from the
parent Vehicle. Because Jeep didn’t..., I see!
10
Why not use abstract class instead of
interface? (4)
SR: So how to guarantee or to force ITS CLOSED
SUBCLASSES to override every methods in
superclass?
CB: Hmmm, we make the superclass to be abstract class
and so do the methods.
SR: That’s right. The interface acts the SAME things.
CR: I see. I think if the abstract class and interface are
the same, why we need interface?
And WHY DON’T WE USE ABSTRACT CLASS
INSTEAD OF INTERFACE?
11
Why not use abstract class instead of
interface? (5)
SR: - It’s such a good question?
- You know, in some other languages like C++, a class
can inherit multiple superclasses which is known
multiple inheritance. Java, however, does not allow
multiple inheritance. That is, a class can only have a
single inheritance.
CB: So what’s wrong with the single inheritance?
SR: Well, A class can inherit only one superclass. Like:
public class Jeep extends Vehicle{
}
12
Why not use abstract class instead of
interface? (6)
CB: Yes. It is right. Vehicle must be a parent of Jeep.
SR: What about if we want to use JApplet in Vehicle
as well?
CB: Then we can do like this:
public class Jeep extends JApplet, Vehicle{
}
SR: That’s what I’m talking about! You cannot have
multiple inheritance in Java. If you still want to do like
this, you will get compile error.
And You know, you can’t do this in other languages like
ActionScript or C# as well. You cannot!!!
13
Why not use abstract class instead of
interface? (7)
CB: So...
SR: you have to make one of these two classes
(JApplet and Vehicle) to be interface. Because
you can inherit one class and implement another class.
CB: But which one should I choose to be interface?
SR: It’s not a question!
CB: Why not?
SR: JApplet is a Java API. How can you change it to
interface? You can only change your Vehicle from
abstract class to interface.
14
Why not use abstract class instead of
interface? (8)
CB:OK. Can you change Vehicle to interface for me?
SR: Not again. You should know to do it !!!
CB: I don’t know. That’s why I ask you!
SR: OK. Here is the code of abstract class:
public abstract class Vehicle {
public abstract String getTradeMark();
public abstract double getSpeed();
public abstract boolean hasWeapon();
}
15
Why not use abstract class instead of
interface? (9)
SR: And here is the change to interface:
public interface Vehicle {
public String getTradeMark();
public double getSpeed();
public boolean hasWeapon();
}
CB: I think you didn’t mark methods with abstract
keyword!
SR: That’s OK. Mark it or not, it’s the same. It’s always
abstract automatically.
16
Why not use abstract class instead of
interface? (10)
CB: Any change with the Jeep class?
SR: Of course, but a bit. Just from extends to implements.
public class Jeep implements Vehicle {
public String getTradeMark(){
return “Jeep”;
}
public double getSpeed(){
return 250;
}
public boolean hasWeapon(){
return true;
}
}
17
Why not use abstract class instead of
interface? (11)
CB: I see. It’s great!
SR: Even greater than this, Java allow to have
MULTIPLE INTERFACE. That is, you can inherit only
one class, but you can have many interfaces.
E.g.:
public class Fish extends ChessCharacter
implements Runnable, ActionListener,
KeyListener {
/*Overridden methods are here*/
}
CB: Wow, wonderful. Now I know why we use interface
instead of abstract class.
18
Why not use abstract class instead of
interface? (12)
SR: However, You should know that in interface, you
CANNOT include nonabstract methods at all;
whereas in abstract class, you can MIX nonabstract
and abstract methods together.
CB: You mean, if we make an abstract class, then its
subclasses could reuse some nonabstract methods
without override.
SR: That’s right... and...
CB: On the other hands, if we make an interface, then
classes that implement the interface MUST override
every method.
SR: Yes.. You’re right.
19
UML of Interface (1)
• In some old books, you could see UML notation to
descript an interface like this:
20
Runnable
+ run():void
Character
+ getCharacter():String
+ getRole(): String
Interface abstract class
UML of Interface (2)
• But in UML 2.0, to make a difference from the abstract
class and the interface notation, they do like this:
21
<<interface>>
Runnable
+ run():void
Character
+ getCharacter():String
+ getRole(): String
Interface abstract class
UML of Interface (3)
• And a line to indicate that a class implements an interface
is dotted line with white arrow head.
22
<<interface>>
Runnable
+ run():void
Fish
<<interface>>
ActionListener
+ actionPerformed(e:ActionEvent ):void
Importance of interface (1)
• To define an interface have to mark interface keyword
instead of class keyword.
• Interface can contain only constants and abstract methods.
Note that we DON’T need to mark method with abstract and
all the methods are public.
public interface Moveable{
//Constants
final int MAX_MOVE = 20;
final int MIN_MOVE = 1;
//abstract methods
public String howToMove();
}
23
Differences between interface and abstract
class (1)
Like abstract class,
1. if a class implement an interface, you have to
override the interface’s methods in the class.
2. You cannot create instances from an interface by
using new operator.
3. Interface can be a type as well.
Runnable r;
1. the purpose of creating interface is because of
polymorphism.
24
Differences between interface and abstract
class (2)
Unlike abstract class,
1. You can have multiple interface in one class. To implement
those interfaces, use implements keyword and separate
interfaces by comma.
public class Test implements Runnable,
ActionListener, MouseMotionListener {
/* Overridden interfaces methods */
}
2. Interface uses interface keyword.
3. Interface is NOT designed to be superclass. Interface is
designed to add some behaviors to a class.
25
Different between interface and abstract class
(3)
4. In the relationships, we say that:
4.1. A relationship between class/abstract class and class
is a strong relationship. It is known as IS-A relationship.
E.g: A duck is a bird. It clearly means the duck is really a
bird. So the bird can be a superclass of a duck. It could be
either concrete or abstract class.
4.2. A relationship between class and interface is a weak
relationship. It is known as Is-kind-of relationship.
E.g: A duck is flyable. Flyable can never ever be the
superclass of the duck. It just means this duck can fly. So
flyable is interface.
26
Notes for Interface (1)
• Because the interface is just designed to add some
behaviors or some features to classes, usually it contains
only one or two general methods. E.g.:
public interface Runnable {
void run();
}
• The reason for this is that interface is not a superclass. So
it doesn’t specify who can use its methods. Generally, its
method might be used by everyone.
27
Notes for Interface (2)
• By Java code conversion, the name of interface is usually
adjective. Because adjective adds some meaning to a noun.
That’s why you’ll see:
- Runnable
- Comparable
- Cloneable
- Accessible
• The interface names for event driven listener are usually ended
with Listener. E.g.
- ActionListener
- MouseMotionListener
- KeyListener
28
Class Design Guildlines p. 358-360
1. A class should descript a single entity or a single thing.
2. Classes are usually designed for reuse by many different
customers and developers.
3. If we want polymorphism, you have to use inheritance design
(of course, overridden method).
4. If NO need polymorphism, use composite design.
5. If a relationship is strong like apple and fruit, please use
abstract class design.
6. If a relationship is weak like apple and eatable, please use
interface design.
29
Last Words (1)
CB: Hi Rabbit. After I know Class Encapsulation, Inheritance,
Polymorphism, Abstract Class and Interface, I think I know
OOP. What should I do after all?
SR: Well. First, you can learn Java of course. I mean you can
understand Java faster than ever.
CB: Oh really?
SR: Yeah... Because the difficult parts of Java is to understand
OOP. I means you have to know OOP in order to learn Java.
CB: What about people claim that they can write Java programs
but they say they don’t need to know OOP.
SR: It sounds cheating, you know! Of course, it is possible if
they really work day-in day-out with Java. But they don’t know
what is going on inside. Also, it takes so much time to be able
to write Java without understand OOP.
30
Last Words (2)
CB: I quess so but anyway. Back to my questions, which Java
topics should I learn further?
SR: You know, Java is huge. The reason for this is because Java
wants every thing work in Java.
CB: What can work in Java?
SR: You use, for example, JavaSE for Desktop Application and
Applet. JavaEE is very big and it is for big enterprise. You can
make JSP, Servlet, Web Applications, Web Services,
JavaBean, Java Server Face and many more.
CB: Wow, I’ve never heard all of these!
SR: You can also use JavaME for mobile devices, PDA, etc.
There are always a lot more to learn! Is it scary?
31
Last Words (3)
CB: Oh my... It is more enormous than I’ve ever imagined.
SR: Actually, if you really want to learn them all, you will take
your whole life to learn. But ... but... you know, after OOP, the
rest of it is only how to understand and to use Java API
library.
CB: What do you mean?
SR: I mean there’s no more strange things like what is
inheritance, polymorphism, abstract class or interface.
Because you know all of it.
CB: Yes. but API...
SR: After you knew OOP, you can use Java API. For example, to
make a button clickable, you have to use an interface called
ActionListener. And them use polymorphism to make it work.
32
Last Words (4)
CB: Heu heu...
SR: And to use JFrame, JApplet, and MIDlet, you have
to use inheritance.
CB: Oh yeah...
SR: And something like this. The key point is to realize
which way to use this API. I mean it is to use
inheritance, polymorphism or interface?
CB: OK. I got it.
SR: One more suggestion. After you know OOP, you
should learn a specific topic in Java rather learn them
all.
33
Last Words (4)
CB: How can I choose?
SR: For example, if you like to work with Web Application,
please go to Serlvet, JSP and Database Programming.
CB: What about if I like to make online game.
SR: This one? You could go to Swing, Applet, Multiple
Threading and distributed computing. But it is hard one.
CB: Any thing else?
SR: Of course. You can also learn JavaME for Mobile Phone.
It is a hot topic for today. Everybody always ask me.
CB: Really. Maybe I could make a decision now. I choose
JavaME.
SR. Yehh I choose the good one. So let go get ‘em!
34
BYE... BYE..
35

More Related Content

What's hot

Abstract class and interface
Abstract class and interfaceAbstract class and interface
Abstract class and interface
Mazharul Sabbir
 
Abstract class in java
Abstract class in javaAbstract class in java
Abstract class in java
Lovely Professional University
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
jehan1987
 
Interfaces and abstract classes
Interfaces and abstract classesInterfaces and abstract classes
Interfaces and abstract classes
AKANSH SINGHAL
 
Abstract class
Abstract classAbstract class
Abstract class
Hoang Nguyen
 
Chapter 9 Abstract Class
Chapter 9 Abstract ClassChapter 9 Abstract Class
Chapter 9 Abstract Class
OUM SAOKOSAL
 
Interface in java ,multiple inheritance in java, interface implementation
Interface in java ,multiple inheritance in java, interface implementationInterface in java ,multiple inheritance in java, interface implementation
Interface in java ,multiple inheritance in java, interface implementation
HoneyChintal
 
06 abstract-classes
06 abstract-classes06 abstract-classes
06 abstract-classes
Anup Burange
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singh
dheeraj_cse
 
Java interface
Java interfaceJava interface
Java interface
Arati Gadgil
 
Abstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaAbstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core Java
MOHIT AGARWAL
 
Java abstract class & abstract methods
Java abstract class & abstract methodsJava abstract class & abstract methods
Java abstract class & abstract methods
Shubham Dwivedi
 
Abstract class and Interface
Abstract class and InterfaceAbstract class and Interface
Abstract class and Interface
Haris Bin Zahid
 
Interface in java
Interface in javaInterface in java
WHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAWHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVA
sivasundari6
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in java
CPD INDIA
 
Abstract Class Presentation
Abstract Class PresentationAbstract Class Presentation
Abstract Class Presentation
tigerwarn
 
Abstract method
Abstract methodAbstract method
Java interfaces
Java interfacesJava interfaces
Java interfaces
Raja Sekhar
 
Interface in java
Interface in javaInterface in java
Interface in java
PhD Research Scholar
 

What's hot (20)

Abstract class and interface
Abstract class and interfaceAbstract class and interface
Abstract class and interface
 
Abstract class in java
Abstract class in javaAbstract class in java
Abstract class in java
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
Interfaces and abstract classes
Interfaces and abstract classesInterfaces and abstract classes
Interfaces and abstract classes
 
Abstract class
Abstract classAbstract class
Abstract class
 
Chapter 9 Abstract Class
Chapter 9 Abstract ClassChapter 9 Abstract Class
Chapter 9 Abstract Class
 
Interface in java ,multiple inheritance in java, interface implementation
Interface in java ,multiple inheritance in java, interface implementationInterface in java ,multiple inheritance in java, interface implementation
Interface in java ,multiple inheritance in java, interface implementation
 
06 abstract-classes
06 abstract-classes06 abstract-classes
06 abstract-classes
 
Interface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar SinghInterface in java By Dheeraj Kumar Singh
Interface in java By Dheeraj Kumar Singh
 
Java interface
Java interfaceJava interface
Java interface
 
Abstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaAbstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core Java
 
Java abstract class & abstract methods
Java abstract class & abstract methodsJava abstract class & abstract methods
Java abstract class & abstract methods
 
Abstract class and Interface
Abstract class and InterfaceAbstract class and Interface
Abstract class and Interface
 
Interface in java
Interface in javaInterface in java
Interface in java
 
WHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVAWHAT IS ABSTRACTION IN JAVA
WHAT IS ABSTRACTION IN JAVA
 
oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in java
 
Abstract Class Presentation
Abstract Class PresentationAbstract Class Presentation
Abstract Class Presentation
 
Abstract method
Abstract methodAbstract method
Abstract method
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
Interface in java
Interface in javaInterface in java
Interface in java
 

Viewers also liked

Abstraction in java
Abstraction in javaAbstraction in java
Abstraction in javasawarkar17
 
Inheritance and Polymorphism
Inheritance and PolymorphismInheritance and Polymorphism
Inheritance and Polymorphism
BG Java EE Course
 
11.1 Android with HTML
11.1 Android with HTML11.1 Android with HTML
11.1 Android with HTML
Oum Saokosal
 
10.3 Android Video
10.3 Android Video10.3 Android Video
10.3 Android Video
Oum Saokosal
 
Java Programming - Polymorphism
Java Programming - PolymorphismJava Programming - Polymorphism
Java Programming - Polymorphism
Oum Saokosal
 
Objected-Oriented Programming with Java
Objected-Oriented Programming with JavaObjected-Oriented Programming with Java
Objected-Oriented Programming with Java
Oum Saokosal
 
Java Programming - Introduction to Abstract Class
Java Programming - Introduction to Abstract ClassJava Programming - Introduction to Abstract Class
Java Programming - Introduction to Abstract Class
Oum Saokosal
 
Java Programming - Inheritance
Java Programming - InheritanceJava Programming - Inheritance
Java Programming - Inheritance
Oum Saokosal
 
Database Concept - ERD Mapping to MS Access
Database Concept - ERD Mapping to MS AccessDatabase Concept - ERD Mapping to MS Access
Database Concept - ERD Mapping to MS Access
Oum Saokosal
 
09.1. Android - Local Database (Sqlite)
09.1. Android - Local Database (Sqlite)09.1. Android - Local Database (Sqlite)
09.1. Android - Local Database (Sqlite)
Oum Saokosal
 
Inheritance and Polymorphism Java
Inheritance and Polymorphism JavaInheritance and Polymorphism Java
Inheritance and Polymorphism Java
M. Raihan
 
Database Concept - Normalization (1NF, 2NF, 3NF)
Database Concept - Normalization (1NF, 2NF, 3NF)Database Concept - Normalization (1NF, 2NF, 3NF)
Database Concept - Normalization (1NF, 2NF, 3NF)
Oum Saokosal
 
Inheritance in JAVA PPT
Inheritance  in JAVA PPTInheritance  in JAVA PPT
Inheritance in JAVA PPT
Pooja Jaiswal
 
Database Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NF
Database Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NFDatabase Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NF
Database Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NF
Oum Saokosal
 
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles
Intro C# Book
 
JAVA Polymorphism
JAVA PolymorphismJAVA Polymorphism
JAVA Polymorphism
Mahi Mca
 
Visula C# Programming Lecture 8
Visula C# Programming Lecture 8Visula C# Programming Lecture 8
Visula C# Programming Lecture 8
Abou Bakr Ashraf
 

Viewers also liked (20)

Abstraction in java
Abstraction in javaAbstraction in java
Abstraction in java
 
Inheritance and Polymorphism
Inheritance and PolymorphismInheritance and Polymorphism
Inheritance and Polymorphism
 
11.1 Android with HTML
11.1 Android with HTML11.1 Android with HTML
11.1 Android with HTML
 
10.3 Android Video
10.3 Android Video10.3 Android Video
10.3 Android Video
 
Java Programming - Polymorphism
Java Programming - PolymorphismJava Programming - Polymorphism
Java Programming - Polymorphism
 
Objected-Oriented Programming with Java
Objected-Oriented Programming with JavaObjected-Oriented Programming with Java
Objected-Oriented Programming with Java
 
Java Programming - Introduction to Abstract Class
Java Programming - Introduction to Abstract ClassJava Programming - Introduction to Abstract Class
Java Programming - Introduction to Abstract Class
 
Java Programming - Inheritance
Java Programming - InheritanceJava Programming - Inheritance
Java Programming - Inheritance
 
Database Concept - ERD Mapping to MS Access
Database Concept - ERD Mapping to MS AccessDatabase Concept - ERD Mapping to MS Access
Database Concept - ERD Mapping to MS Access
 
09.1. Android - Local Database (Sqlite)
09.1. Android - Local Database (Sqlite)09.1. Android - Local Database (Sqlite)
09.1. Android - Local Database (Sqlite)
 
Inheritance and Polymorphism Java
Inheritance and Polymorphism JavaInheritance and Polymorphism Java
Inheritance and Polymorphism Java
 
Database Concept - Normalization (1NF, 2NF, 3NF)
Database Concept - Normalization (1NF, 2NF, 3NF)Database Concept - Normalization (1NF, 2NF, 3NF)
Database Concept - Normalization (1NF, 2NF, 3NF)
 
Inheritance
InheritanceInheritance
Inheritance
 
Inheritance in JAVA PPT
Inheritance  in JAVA PPTInheritance  in JAVA PPT
Inheritance in JAVA PPT
 
Database Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NF
Database Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NFDatabase Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NF
Database Normalization 1NF, 2NF, 3NF, BCNF, 4NF, 5NF
 
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles
 
JAVA Polymorphism
JAVA PolymorphismJAVA Polymorphism
JAVA Polymorphism
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
Visula C# Programming Lecture 8
Visula C# Programming Lecture 8Visula C# Programming Lecture 8
Visula C# Programming Lecture 8
 

Similar to Java Programming - Abstract Class and Interface

8abstact class in c#
8abstact class in c#8abstact class in c#
8abstact class in c#
Sireesh K
 
Java 6.pptx
Java 6.pptxJava 6.pptx
Java 6.pptx
usmanusman720379
 
12.2 Abstract class and Interface.ppt
12.2 Abstract class and Interface.ppt12.2 Abstract class and Interface.ppt
12.2 Abstract class and Interface.ppt
VISHNUSHANKARSINGH3
 
Exception handling and packages.pdf
Exception handling and packages.pdfException handling and packages.pdf
Exception handling and packages.pdf
Kp Sharma
 
Lecture 18
Lecture 18Lecture 18
Lecture 18
talha ijaz
 
oops with java modules i & ii.ppt
oops with java modules i & ii.pptoops with java modules i & ii.ppt
oops with java modules i & ii.ppt
rani marri
 
Lambda Expressions in Java 8
Lambda Expressions in Java 8Lambda Expressions in Java 8
Lambda Expressions in Java 8
icarter09
 
Java OOPS Concept
Java OOPS ConceptJava OOPS Concept
Java OOPS Concept
Richa Gupta
 
ABSTRACT CLASSES AND INTERFACES.ppt
ABSTRACT CLASSES AND INTERFACES.pptABSTRACT CLASSES AND INTERFACES.ppt
ABSTRACT CLASSES AND INTERFACES.ppt
JayanthiM15
 
Evolve Your Code
Evolve Your CodeEvolve Your Code
Evolve Your Code
RookieOne
 
Functional programming is the most extreme programming
Functional programming is the most extreme programmingFunctional programming is the most extreme programming
Functional programming is the most extreme programming
samthemonad
 
ITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptxITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptx
kristinatemen
 
Opps
OppsOpps
Core java notes with examples
Core java notes with examplesCore java notes with examples
Core java notes with examples
bindur87
 
C# interview-questions
C# interview-questionsC# interview-questions
C# interview-questions
nicolbiden
 
SOLID principles
SOLID principlesSOLID principles
SOLID principles
Jonathan Holloway
 
C# interview
C# interviewC# interview
C# interview
ajeesharakkal
 
Oop
OopOop

Similar to Java Programming - Abstract Class and Interface (20)

9 abstract interface
9 abstract interface9 abstract interface
9 abstract interface
 
8abstact class in c#
8abstact class in c#8abstact class in c#
8abstact class in c#
 
Java 6.pptx
Java 6.pptxJava 6.pptx
Java 6.pptx
 
12.2 Abstract class and Interface.ppt
12.2 Abstract class and Interface.ppt12.2 Abstract class and Interface.ppt
12.2 Abstract class and Interface.ppt
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
Exception handling and packages.pdf
Exception handling and packages.pdfException handling and packages.pdf
Exception handling and packages.pdf
 
Lecture 18
Lecture 18Lecture 18
Lecture 18
 
oops with java modules i & ii.ppt
oops with java modules i & ii.pptoops with java modules i & ii.ppt
oops with java modules i & ii.ppt
 
Lambda Expressions in Java 8
Lambda Expressions in Java 8Lambda Expressions in Java 8
Lambda Expressions in Java 8
 
Java OOPS Concept
Java OOPS ConceptJava OOPS Concept
Java OOPS Concept
 
ABSTRACT CLASSES AND INTERFACES.ppt
ABSTRACT CLASSES AND INTERFACES.pptABSTRACT CLASSES AND INTERFACES.ppt
ABSTRACT CLASSES AND INTERFACES.ppt
 
Evolve Your Code
Evolve Your CodeEvolve Your Code
Evolve Your Code
 
Functional programming is the most extreme programming
Functional programming is the most extreme programmingFunctional programming is the most extreme programming
Functional programming is the most extreme programming
 
ITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptxITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptx
 
Opps
OppsOpps
Opps
 
Core java notes with examples
Core java notes with examplesCore java notes with examples
Core java notes with examples
 
C# interview-questions
C# interview-questionsC# interview-questions
C# interview-questions
 
SOLID principles
SOLID principlesSOLID principles
SOLID principles
 
C# interview
C# interviewC# interview
C# interview
 
Oop
OopOop
Oop
 

More from Oum Saokosal

12. Android Basic Google Map
12. Android Basic Google Map12. Android Basic Google Map
12. Android Basic Google Map
Oum Saokosal
 
10.2 Android Audio with SD Card
10.2 Android Audio with SD Card10.2 Android Audio with SD Card
10.2 Android Audio with SD Card
Oum Saokosal
 
10.1. Android Audio
10.1. Android Audio10.1. Android Audio
10.1. Android Audio
Oum Saokosal
 
08.1. Android How to Use Intent (explicit)
08.1. Android How to Use Intent (explicit)08.1. Android How to Use Intent (explicit)
08.1. Android How to Use Intent (explicit)
Oum Saokosal
 
07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)
Oum Saokosal
 
07.3. Android Alert message, List, Dropdown, and Auto Complete
07.3. Android Alert message, List, Dropdown, and Auto Complete07.3. Android Alert message, List, Dropdown, and Auto Complete
07.3. Android Alert message, List, Dropdown, and Auto Complete
Oum Saokosal
 
07.1. Android Even Handling
07.1. Android Even Handling07.1. Android Even Handling
07.1. Android Even Handling
Oum Saokosal
 
06. Android Basic Widget and Container
06. Android Basic Widget and Container06. Android Basic Widget and Container
06. Android Basic Widget and Container
Oum Saokosal
 
More on Application Structure
More on Application StructureMore on Application Structure
More on Application Structure
Oum Saokosal
 
04. Review OOP with Java
04. Review OOP with Java04. Review OOP with Java
04. Review OOP with Java
Oum Saokosal
 
Basic Understanding of Android XML
Basic Understanding of Android XMLBasic Understanding of Android XML
Basic Understanding of Android XML
Oum Saokosal
 
02.1 - Getting Started with Android
02.1 - Getting Started with Android02.1 - Getting Started with Android
02.1 - Getting Started with Android
Oum Saokosal
 
Introduction to Android
Introduction to AndroidIntroduction to Android
Introduction to Android
Oum Saokosal
 
Using intents in android
Using intents in androidUsing intents in android
Using intents in android
Oum Saokosal
 
Android - Introduction
Android - IntroductionAndroid - Introduction
Android - Introduction
Oum Saokosal
 

More from Oum Saokosal (15)

12. Android Basic Google Map
12. Android Basic Google Map12. Android Basic Google Map
12. Android Basic Google Map
 
10.2 Android Audio with SD Card
10.2 Android Audio with SD Card10.2 Android Audio with SD Card
10.2 Android Audio with SD Card
 
10.1. Android Audio
10.1. Android Audio10.1. Android Audio
10.1. Android Audio
 
08.1. Android How to Use Intent (explicit)
08.1. Android How to Use Intent (explicit)08.1. Android How to Use Intent (explicit)
08.1. Android How to Use Intent (explicit)
 
07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)07.4. Android Basic Simple Browser (WebView)
07.4. Android Basic Simple Browser (WebView)
 
07.3. Android Alert message, List, Dropdown, and Auto Complete
07.3. Android Alert message, List, Dropdown, and Auto Complete07.3. Android Alert message, List, Dropdown, and Auto Complete
07.3. Android Alert message, List, Dropdown, and Auto Complete
 
07.1. Android Even Handling
07.1. Android Even Handling07.1. Android Even Handling
07.1. Android Even Handling
 
06. Android Basic Widget and Container
06. Android Basic Widget and Container06. Android Basic Widget and Container
06. Android Basic Widget and Container
 
More on Application Structure
More on Application StructureMore on Application Structure
More on Application Structure
 
04. Review OOP with Java
04. Review OOP with Java04. Review OOP with Java
04. Review OOP with Java
 
Basic Understanding of Android XML
Basic Understanding of Android XMLBasic Understanding of Android XML
Basic Understanding of Android XML
 
02.1 - Getting Started with Android
02.1 - Getting Started with Android02.1 - Getting Started with Android
02.1 - Getting Started with Android
 
Introduction to Android
Introduction to AndroidIntroduction to Android
Introduction to Android
 
Using intents in android
Using intents in androidUsing intents in android
Using intents in android
 
Android - Introduction
Android - IntroductionAndroid - Introduction
Android - Introduction
 

Recently uploaded

Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
Tamralipta Mahavidyalaya
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
heathfieldcps1
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
EduSkills OECD
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
MysoreMuleSoftMeetup
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
Vikramjit Singh
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
CarlosHernanMontoyab2
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
SACHIN R KONDAGURI
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
vaibhavrinwa19
 
The Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptxThe Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptx
DhatriParmar
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
Pavel ( NSTU)
 
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
EugeneSaldivar
 
Polish students' mobility in the Czech Republic
Polish students' mobility in the Czech RepublicPolish students' mobility in the Czech Republic
Polish students' mobility in the Czech Republic
Anna Sz.
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
Celine George
 
Lapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdfLapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdf
Jean Carlos Nunes Paixão
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
camakaiclarkmusic
 
The geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideasThe geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideas
GeoBlogs
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdf
joachimlavalley1
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
DeeptiGupta154
 
A Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in EducationA Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in Education
Peter Windle
 

Recently uploaded (20)

Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
 
Digital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and ResearchDigital Tools and AI for Teaching Learning and Research
Digital Tools and AI for Teaching Learning and Research
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
 
The Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptxThe Accursed House by Émile Gaboriau.pptx
The Accursed House by Émile Gaboriau.pptx
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...TESDA TM1 REVIEWER  FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
TESDA TM1 REVIEWER FOR NATIONAL ASSESSMENT WRITTEN AND ORAL QUESTIONS WITH A...
 
Polish students' mobility in the Czech Republic
Polish students' mobility in the Czech RepublicPolish students' mobility in the Czech Republic
Polish students' mobility in the Czech Republic
 
How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17How to Make a Field invisible in Odoo 17
How to Make a Field invisible in Odoo 17
 
Lapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdfLapbook sobre os Regimes Totalitários.pdf
Lapbook sobre os Regimes Totalitários.pdf
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
 
The geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideasThe geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideas
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdf
 
Overview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with MechanismOverview on Edible Vaccine: Pros & Cons with Mechanism
Overview on Edible Vaccine: Pros & Cons with Mechanism
 
A Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in EducationA Strategic Approach: GenAI in Education
A Strategic Approach: GenAI in Education
 

Java Programming - Abstract Class and Interface

  • 1. CHAPTER 9 ABSTRACT CLASS & INTERFACE Oum Saokosal, Chief of Computer Science National Polytechnic Institute of Cambodia Tel: (855)-12-252-752 E-mail: oum_saokosal@yahoo.com 1
  • 3. Interface • What is interface? • How to define interface? • How to use interface? • Why not use abstract class instead of interface? • UML of interface • Importance of interface • Different between interface and abstract class • Notes for interface • Class Design Guidline • Last words 3
  • 4. What is Interface? • In many ways, Interface is very similar to abstract class but it marks with interface keyword instead of abstract class keyword. public interface InterfaceName { } • Unlike abstract class which can also contain nonabstract methods, interface contain ONLY abstract methods and constants. 4
  • 5. How to define interface? • Defining an interface: <modifier> interface InterfaceName{ /* Constant declarations */ /* Method signatures */ } • E.g: public interface Moveable{ final int MAX_MOVE = 20; final int MIN_MOVE = 1; public void move(); } 5
  • 6. How to use interface? (1) • Use implements keyword to implement an interface. • E.g. Assume we have King implementing Moveable. public interface Moveable{ final int MAX_MOVE = 20; final int MIN_MOVE = 1; public String howToMove(); } public class King implements Moveable{ @Override public String howToMove(){ return “One step to every direction”; } } 6
  • 7. How to use interface? (2) You can do this also: public class Test extends JFrame implements Moveable{ public Test(){ setTitle(howToMove()); setSize(500, 200); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } @Override public String howToMove(){ return “One step to every direction”; } } 7
  • 8. Why not use abstract class instead of interface? (1) 8 Hey Rabbit! Today’s class is about interface. The word “interface” here means GUI, Graphical User Interface? Not at all, Ball. GUI is GUI. Interface here is a kind of ideas in OOP which is similar to abstract class. I’ll tell ya what...
  • 9. Why not use abstract class instead of interface? (2) CB: OK! Let me start my question. What is interface? SR: Just like I said. Interface is a kind of ideas in OOP which is similar to abstract class. CB: Can you review what the abstract class is? SR: Come on... You’ve learned it, haven’t you? You should know it...! CB: Well, but ... you know... SR: - OK, no but. I can tell some... - Actually, the most important thing of abstract class is just to GUARANTEE that its closed subclasses MUST override its abstract methods. 9
  • 10. Why not use abstract class instead of interface? (3) CB: Why guarantee? SR: Because of polymorphism. Do you remember the form of polymorphism. CR: Like this: Vehicle v = new Jeep(); v.getGun(); SR: And what wrong if Jeep didn’t override getGun() method? CR: Oh I see. Then it will call getGun() from the parent Vehicle. Because Jeep didn’t..., I see! 10
  • 11. Why not use abstract class instead of interface? (4) SR: So how to guarantee or to force ITS CLOSED SUBCLASSES to override every methods in superclass? CB: Hmmm, we make the superclass to be abstract class and so do the methods. SR: That’s right. The interface acts the SAME things. CR: I see. I think if the abstract class and interface are the same, why we need interface? And WHY DON’T WE USE ABSTRACT CLASS INSTEAD OF INTERFACE? 11
  • 12. Why not use abstract class instead of interface? (5) SR: - It’s such a good question? - You know, in some other languages like C++, a class can inherit multiple superclasses which is known multiple inheritance. Java, however, does not allow multiple inheritance. That is, a class can only have a single inheritance. CB: So what’s wrong with the single inheritance? SR: Well, A class can inherit only one superclass. Like: public class Jeep extends Vehicle{ } 12
  • 13. Why not use abstract class instead of interface? (6) CB: Yes. It is right. Vehicle must be a parent of Jeep. SR: What about if we want to use JApplet in Vehicle as well? CB: Then we can do like this: public class Jeep extends JApplet, Vehicle{ } SR: That’s what I’m talking about! You cannot have multiple inheritance in Java. If you still want to do like this, you will get compile error. And You know, you can’t do this in other languages like ActionScript or C# as well. You cannot!!! 13
  • 14. Why not use abstract class instead of interface? (7) CB: So... SR: you have to make one of these two classes (JApplet and Vehicle) to be interface. Because you can inherit one class and implement another class. CB: But which one should I choose to be interface? SR: It’s not a question! CB: Why not? SR: JApplet is a Java API. How can you change it to interface? You can only change your Vehicle from abstract class to interface. 14
  • 15. Why not use abstract class instead of interface? (8) CB:OK. Can you change Vehicle to interface for me? SR: Not again. You should know to do it !!! CB: I don’t know. That’s why I ask you! SR: OK. Here is the code of abstract class: public abstract class Vehicle { public abstract String getTradeMark(); public abstract double getSpeed(); public abstract boolean hasWeapon(); } 15
  • 16. Why not use abstract class instead of interface? (9) SR: And here is the change to interface: public interface Vehicle { public String getTradeMark(); public double getSpeed(); public boolean hasWeapon(); } CB: I think you didn’t mark methods with abstract keyword! SR: That’s OK. Mark it or not, it’s the same. It’s always abstract automatically. 16
  • 17. Why not use abstract class instead of interface? (10) CB: Any change with the Jeep class? SR: Of course, but a bit. Just from extends to implements. public class Jeep implements Vehicle { public String getTradeMark(){ return “Jeep”; } public double getSpeed(){ return 250; } public boolean hasWeapon(){ return true; } } 17
  • 18. Why not use abstract class instead of interface? (11) CB: I see. It’s great! SR: Even greater than this, Java allow to have MULTIPLE INTERFACE. That is, you can inherit only one class, but you can have many interfaces. E.g.: public class Fish extends ChessCharacter implements Runnable, ActionListener, KeyListener { /*Overridden methods are here*/ } CB: Wow, wonderful. Now I know why we use interface instead of abstract class. 18
  • 19. Why not use abstract class instead of interface? (12) SR: However, You should know that in interface, you CANNOT include nonabstract methods at all; whereas in abstract class, you can MIX nonabstract and abstract methods together. CB: You mean, if we make an abstract class, then its subclasses could reuse some nonabstract methods without override. SR: That’s right... and... CB: On the other hands, if we make an interface, then classes that implement the interface MUST override every method. SR: Yes.. You’re right. 19
  • 20. UML of Interface (1) • In some old books, you could see UML notation to descript an interface like this: 20 Runnable + run():void Character + getCharacter():String + getRole(): String Interface abstract class
  • 21. UML of Interface (2) • But in UML 2.0, to make a difference from the abstract class and the interface notation, they do like this: 21 <<interface>> Runnable + run():void Character + getCharacter():String + getRole(): String Interface abstract class
  • 22. UML of Interface (3) • And a line to indicate that a class implements an interface is dotted line with white arrow head. 22 <<interface>> Runnable + run():void Fish <<interface>> ActionListener + actionPerformed(e:ActionEvent ):void
  • 23. Importance of interface (1) • To define an interface have to mark interface keyword instead of class keyword. • Interface can contain only constants and abstract methods. Note that we DON’T need to mark method with abstract and all the methods are public. public interface Moveable{ //Constants final int MAX_MOVE = 20; final int MIN_MOVE = 1; //abstract methods public String howToMove(); } 23
  • 24. Differences between interface and abstract class (1) Like abstract class, 1. if a class implement an interface, you have to override the interface’s methods in the class. 2. You cannot create instances from an interface by using new operator. 3. Interface can be a type as well. Runnable r; 1. the purpose of creating interface is because of polymorphism. 24
  • 25. Differences between interface and abstract class (2) Unlike abstract class, 1. You can have multiple interface in one class. To implement those interfaces, use implements keyword and separate interfaces by comma. public class Test implements Runnable, ActionListener, MouseMotionListener { /* Overridden interfaces methods */ } 2. Interface uses interface keyword. 3. Interface is NOT designed to be superclass. Interface is designed to add some behaviors to a class. 25
  • 26. Different between interface and abstract class (3) 4. In the relationships, we say that: 4.1. A relationship between class/abstract class and class is a strong relationship. It is known as IS-A relationship. E.g: A duck is a bird. It clearly means the duck is really a bird. So the bird can be a superclass of a duck. It could be either concrete or abstract class. 4.2. A relationship between class and interface is a weak relationship. It is known as Is-kind-of relationship. E.g: A duck is flyable. Flyable can never ever be the superclass of the duck. It just means this duck can fly. So flyable is interface. 26
  • 27. Notes for Interface (1) • Because the interface is just designed to add some behaviors or some features to classes, usually it contains only one or two general methods. E.g.: public interface Runnable { void run(); } • The reason for this is that interface is not a superclass. So it doesn’t specify who can use its methods. Generally, its method might be used by everyone. 27
  • 28. Notes for Interface (2) • By Java code conversion, the name of interface is usually adjective. Because adjective adds some meaning to a noun. That’s why you’ll see: - Runnable - Comparable - Cloneable - Accessible • The interface names for event driven listener are usually ended with Listener. E.g. - ActionListener - MouseMotionListener - KeyListener 28
  • 29. Class Design Guildlines p. 358-360 1. A class should descript a single entity or a single thing. 2. Classes are usually designed for reuse by many different customers and developers. 3. If we want polymorphism, you have to use inheritance design (of course, overridden method). 4. If NO need polymorphism, use composite design. 5. If a relationship is strong like apple and fruit, please use abstract class design. 6. If a relationship is weak like apple and eatable, please use interface design. 29
  • 30. Last Words (1) CB: Hi Rabbit. After I know Class Encapsulation, Inheritance, Polymorphism, Abstract Class and Interface, I think I know OOP. What should I do after all? SR: Well. First, you can learn Java of course. I mean you can understand Java faster than ever. CB: Oh really? SR: Yeah... Because the difficult parts of Java is to understand OOP. I means you have to know OOP in order to learn Java. CB: What about people claim that they can write Java programs but they say they don’t need to know OOP. SR: It sounds cheating, you know! Of course, it is possible if they really work day-in day-out with Java. But they don’t know what is going on inside. Also, it takes so much time to be able to write Java without understand OOP. 30
  • 31. Last Words (2) CB: I quess so but anyway. Back to my questions, which Java topics should I learn further? SR: You know, Java is huge. The reason for this is because Java wants every thing work in Java. CB: What can work in Java? SR: You use, for example, JavaSE for Desktop Application and Applet. JavaEE is very big and it is for big enterprise. You can make JSP, Servlet, Web Applications, Web Services, JavaBean, Java Server Face and many more. CB: Wow, I’ve never heard all of these! SR: You can also use JavaME for mobile devices, PDA, etc. There are always a lot more to learn! Is it scary? 31
  • 32. Last Words (3) CB: Oh my... It is more enormous than I’ve ever imagined. SR: Actually, if you really want to learn them all, you will take your whole life to learn. But ... but... you know, after OOP, the rest of it is only how to understand and to use Java API library. CB: What do you mean? SR: I mean there’s no more strange things like what is inheritance, polymorphism, abstract class or interface. Because you know all of it. CB: Yes. but API... SR: After you knew OOP, you can use Java API. For example, to make a button clickable, you have to use an interface called ActionListener. And them use polymorphism to make it work. 32
  • 33. Last Words (4) CB: Heu heu... SR: And to use JFrame, JApplet, and MIDlet, you have to use inheritance. CB: Oh yeah... SR: And something like this. The key point is to realize which way to use this API. I mean it is to use inheritance, polymorphism or interface? CB: OK. I got it. SR: One more suggestion. After you know OOP, you should learn a specific topic in Java rather learn them all. 33
  • 34. Last Words (4) CB: How can I choose? SR: For example, if you like to work with Web Application, please go to Serlvet, JSP and Database Programming. CB: What about if I like to make online game. SR: This one? You could go to Swing, Applet, Multiple Threading and distributed computing. But it is hard one. CB: Any thing else? SR: Of course. You can also learn JavaME for Mobile Phone. It is a hot topic for today. Everybody always ask me. CB: Really. Maybe I could make a decision now. I choose JavaME. SR. Yehh I choose the good one. So let go get ‘em! 34