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
Ad

More Related Content

What's hot (20)

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
Interface in java
Lovely Professional University
 
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
Abstract method
Yaswanth Babu Gummadivelli
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
Raja Sekhar
 
Interface in java
Interface in javaInterface in java
Interface in java
PhD Research Scholar
 
Abstract class and interface
Abstract class and interfaceAbstract class and interface
Abstract class and interface
Mazharul Sabbir
 
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
 
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
 
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
 
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
 

Viewers also liked (20)

Abstraction in java
Abstraction in javaAbstraction in java
Abstraction in java
sawarkar17
 
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
InheritanceInheritance
Inheritance
Selvin Josy Bai Somu
 
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
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
Kumar Gaurav
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
Raffaele Doti
 
Visula C# Programming Lecture 8
Visula C# Programming Lecture 8Visula C# Programming Lecture 8
Visula C# Programming Lecture 8
Abou Bakr Ashraf
 
Abstraction in java
Abstraction in javaAbstraction in java
Abstraction in java
sawarkar17
 
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
 
Ad

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

9 abstract interface
9 abstract interface9 abstract interface
9 abstract interface
Abhijit Gaikwad
 
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
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
Sujit Kumar
 
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
 
FINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdf
FINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdfFINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdf
FINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdf
VGaneshKarthikeyan
 
ITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptxITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptx
kristinatemen
 
Opps
OppsOpps
Opps
Lalit Kale
 
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
 
8abstact class in c#
8abstact class in c#8abstact class in c#
8abstact class in c#
Sireesh K
 
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
 
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
 
FINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdf
FINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdfFINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdf
FINAL_DAY11_INTERFACES_Roles_and_Responsibility.pdf
VGaneshKarthikeyan
 
ITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptxITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptx
kristinatemen
 
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
 
Ad

More from Oum Saokosal (15)

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

Recently uploaded (20)

2025 The Senior Landscape and SET plan preparations.pptx
2025 The Senior Landscape and SET plan preparations.pptx2025 The Senior Landscape and SET plan preparations.pptx
2025 The Senior Landscape and SET plan preparations.pptx
mansk2
 
Cultivation Practice of Onion in Nepal.pptx
Cultivation Practice of Onion in Nepal.pptxCultivation Practice of Onion in Nepal.pptx
Cultivation Practice of Onion in Nepal.pptx
UmeshTimilsina1
 
Lecture 4 INSECT CUTICLE and moulting.pptx
Lecture 4 INSECT CUTICLE and moulting.pptxLecture 4 INSECT CUTICLE and moulting.pptx
Lecture 4 INSECT CUTICLE and moulting.pptx
Arshad Shaikh
 
Tax evasion, Tax planning & Tax avoidance.pptx
Tax evasion, Tax  planning &  Tax avoidance.pptxTax evasion, Tax  planning &  Tax avoidance.pptx
Tax evasion, Tax planning & Tax avoidance.pptx
manishbaidya2017
 
MEDICAL BIOLOGY MCQS BY. DR NASIR MUSTAFA
MEDICAL BIOLOGY MCQS  BY. DR NASIR MUSTAFAMEDICAL BIOLOGY MCQS  BY. DR NASIR MUSTAFA
MEDICAL BIOLOGY MCQS BY. DR NASIR MUSTAFA
Dr. Nasir Mustafa
 
Ajanta Paintings: Study as a Source of History
Ajanta Paintings: Study as a Source of HistoryAjanta Paintings: Study as a Source of History
Ajanta Paintings: Study as a Source of History
Virag Sontakke
 
U3 ANTITUBERCULAR DRUGS Pharmacology 3.pptx
U3 ANTITUBERCULAR DRUGS Pharmacology 3.pptxU3 ANTITUBERCULAR DRUGS Pharmacology 3.pptx
U3 ANTITUBERCULAR DRUGS Pharmacology 3.pptx
Mayuri Chavan
 
What is the Philosophy of Statistics? (and how I was drawn to it)
What is the Philosophy of Statistics? (and how I was drawn to it)What is the Philosophy of Statistics? (and how I was drawn to it)
What is the Philosophy of Statistics? (and how I was drawn to it)
jemille6
 
Origin of Brahmi script: A breaking down of various theories
Origin of Brahmi script: A breaking down of various theoriesOrigin of Brahmi script: A breaking down of various theories
Origin of Brahmi script: A breaking down of various theories
PrachiSontakke5
 
Form View Attributes in Odoo 18 - Odoo Slides
Form View Attributes in Odoo 18 - Odoo SlidesForm View Attributes in Odoo 18 - Odoo Slides
Form View Attributes in Odoo 18 - Odoo Slides
Celine George
 
spinal cord disorders (Myelopathies and radiculoapthies)
spinal cord disorders (Myelopathies and radiculoapthies)spinal cord disorders (Myelopathies and radiculoapthies)
spinal cord disorders (Myelopathies and radiculoapthies)
Mohamed Rizk Khodair
 
Kumushini_Thennakoon_CAPWIC_slides_.pptx
Kumushini_Thennakoon_CAPWIC_slides_.pptxKumushini_Thennakoon_CAPWIC_slides_.pptx
Kumushini_Thennakoon_CAPWIC_slides_.pptx
kumushiniodu
 
Rock Art As a Source of Ancient Indian History
Rock Art As a Source of Ancient Indian HistoryRock Art As a Source of Ancient Indian History
Rock Art As a Source of Ancient Indian History
Virag Sontakke
 
Myasthenia gravis (Neuromuscular disorder)
Myasthenia gravis (Neuromuscular disorder)Myasthenia gravis (Neuromuscular disorder)
Myasthenia gravis (Neuromuscular disorder)
Mohamed Rizk Khodair
 
LDMMIA Reiki News Ed3 Vol1 For Team and Guests
LDMMIA Reiki News Ed3 Vol1 For Team and GuestsLDMMIA Reiki News Ed3 Vol1 For Team and Guests
LDMMIA Reiki News Ed3 Vol1 For Team and Guests
LDM Mia eStudios
 
How to Create Kanban View in Odoo 18 - Odoo Slides
How to Create Kanban View in Odoo 18 - Odoo SlidesHow to Create Kanban View in Odoo 18 - Odoo Slides
How to Create Kanban View in Odoo 18 - Odoo Slides
Celine George
 
Bridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast Brooklyn
Bridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast BrooklynBridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast Brooklyn
Bridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast Brooklyn
i4jd41bk
 
How to Manage Upselling in Odoo 18 Sales
How to Manage Upselling in Odoo 18 SalesHow to Manage Upselling in Odoo 18 Sales
How to Manage Upselling in Odoo 18 Sales
Celine George
 
Kenan Fellows Participants, Projects 2025-26 Cohort
Kenan Fellows Participants, Projects 2025-26 CohortKenan Fellows Participants, Projects 2025-26 Cohort
Kenan Fellows Participants, Projects 2025-26 Cohort
EducationNC
 
How to Add Customer Note in Odoo 18 POS - Odoo Slides
How to Add Customer Note in Odoo 18 POS - Odoo SlidesHow to Add Customer Note in Odoo 18 POS - Odoo Slides
How to Add Customer Note in Odoo 18 POS - Odoo Slides
Celine George
 
2025 The Senior Landscape and SET plan preparations.pptx
2025 The Senior Landscape and SET plan preparations.pptx2025 The Senior Landscape and SET plan preparations.pptx
2025 The Senior Landscape and SET plan preparations.pptx
mansk2
 
Cultivation Practice of Onion in Nepal.pptx
Cultivation Practice of Onion in Nepal.pptxCultivation Practice of Onion in Nepal.pptx
Cultivation Practice of Onion in Nepal.pptx
UmeshTimilsina1
 
Lecture 4 INSECT CUTICLE and moulting.pptx
Lecture 4 INSECT CUTICLE and moulting.pptxLecture 4 INSECT CUTICLE and moulting.pptx
Lecture 4 INSECT CUTICLE and moulting.pptx
Arshad Shaikh
 
Tax evasion, Tax planning & Tax avoidance.pptx
Tax evasion, Tax  planning &  Tax avoidance.pptxTax evasion, Tax  planning &  Tax avoidance.pptx
Tax evasion, Tax planning & Tax avoidance.pptx
manishbaidya2017
 
MEDICAL BIOLOGY MCQS BY. DR NASIR MUSTAFA
MEDICAL BIOLOGY MCQS  BY. DR NASIR MUSTAFAMEDICAL BIOLOGY MCQS  BY. DR NASIR MUSTAFA
MEDICAL BIOLOGY MCQS BY. DR NASIR MUSTAFA
Dr. Nasir Mustafa
 
Ajanta Paintings: Study as a Source of History
Ajanta Paintings: Study as a Source of HistoryAjanta Paintings: Study as a Source of History
Ajanta Paintings: Study as a Source of History
Virag Sontakke
 
U3 ANTITUBERCULAR DRUGS Pharmacology 3.pptx
U3 ANTITUBERCULAR DRUGS Pharmacology 3.pptxU3 ANTITUBERCULAR DRUGS Pharmacology 3.pptx
U3 ANTITUBERCULAR DRUGS Pharmacology 3.pptx
Mayuri Chavan
 
What is the Philosophy of Statistics? (and how I was drawn to it)
What is the Philosophy of Statistics? (and how I was drawn to it)What is the Philosophy of Statistics? (and how I was drawn to it)
What is the Philosophy of Statistics? (and how I was drawn to it)
jemille6
 
Origin of Brahmi script: A breaking down of various theories
Origin of Brahmi script: A breaking down of various theoriesOrigin of Brahmi script: A breaking down of various theories
Origin of Brahmi script: A breaking down of various theories
PrachiSontakke5
 
Form View Attributes in Odoo 18 - Odoo Slides
Form View Attributes in Odoo 18 - Odoo SlidesForm View Attributes in Odoo 18 - Odoo Slides
Form View Attributes in Odoo 18 - Odoo Slides
Celine George
 
spinal cord disorders (Myelopathies and radiculoapthies)
spinal cord disorders (Myelopathies and radiculoapthies)spinal cord disorders (Myelopathies and radiculoapthies)
spinal cord disorders (Myelopathies and radiculoapthies)
Mohamed Rizk Khodair
 
Kumushini_Thennakoon_CAPWIC_slides_.pptx
Kumushini_Thennakoon_CAPWIC_slides_.pptxKumushini_Thennakoon_CAPWIC_slides_.pptx
Kumushini_Thennakoon_CAPWIC_slides_.pptx
kumushiniodu
 
Rock Art As a Source of Ancient Indian History
Rock Art As a Source of Ancient Indian HistoryRock Art As a Source of Ancient Indian History
Rock Art As a Source of Ancient Indian History
Virag Sontakke
 
Myasthenia gravis (Neuromuscular disorder)
Myasthenia gravis (Neuromuscular disorder)Myasthenia gravis (Neuromuscular disorder)
Myasthenia gravis (Neuromuscular disorder)
Mohamed Rizk Khodair
 
LDMMIA Reiki News Ed3 Vol1 For Team and Guests
LDMMIA Reiki News Ed3 Vol1 For Team and GuestsLDMMIA Reiki News Ed3 Vol1 For Team and Guests
LDMMIA Reiki News Ed3 Vol1 For Team and Guests
LDM Mia eStudios
 
How to Create Kanban View in Odoo 18 - Odoo Slides
How to Create Kanban View in Odoo 18 - Odoo SlidesHow to Create Kanban View in Odoo 18 - Odoo Slides
How to Create Kanban View in Odoo 18 - Odoo Slides
Celine George
 
Bridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast Brooklyn
Bridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast BrooklynBridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast Brooklyn
Bridging the Transit Gap: Equity Drive Feeder Bus Design for Southeast Brooklyn
i4jd41bk
 
How to Manage Upselling in Odoo 18 Sales
How to Manage Upselling in Odoo 18 SalesHow to Manage Upselling in Odoo 18 Sales
How to Manage Upselling in Odoo 18 Sales
Celine George
 
Kenan Fellows Participants, Projects 2025-26 Cohort
Kenan Fellows Participants, Projects 2025-26 CohortKenan Fellows Participants, Projects 2025-26 Cohort
Kenan Fellows Participants, Projects 2025-26 Cohort
EducationNC
 
How to Add Customer Note in Odoo 18 POS - Odoo Slides
How to Add Customer Note in Odoo 18 POS - Odoo SlidesHow to Add Customer Note in Odoo 18 POS - Odoo Slides
How to Add Customer Note in Odoo 18 POS - Odoo Slides
Celine George
 

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
  翻译: