0% found this document useful (0 votes)
3 views

Lecture 4 - Polymorphism 3

Uploaded by

elodaimond
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Lecture 4 - Polymorphism 3

Uploaded by

elodaimond
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 21

OBJECT-ORIENTED

PROGRAMMING (JAVA)
LECTURE 4 – POLYMORPHISM
AND INTERFACES
Askar Khaimuldin
Senior-lecturer
[email protected]
z
Astana IT University
CONTENT
 Concept of polymorphism
 Overriding methods
 Polymorphic Behaviour
 Type Casting (narrowing conversion)
 Abstract class
 Interfaces
 final methods and classes
CONCEPT OF
POLYMORPHISM
 Polymorphism means “many forms”
 “Program in the general” rather than “program in the
specific.”
 Polymorphism enables you to write programs that
process objects that share the same superclass, either
directly/indirectly, as if they were all objects of the
superclass
 Two basic types:
 Compile time Polymorphism - Overloading
 Runtime Polymorphism - Overriding
OVERRIDING METHODS
 Method overriding it is a case of the runtime
polymorphism
 JVM determines an appropriate method to be called at
the runtime
 It is also called dynamic or late binding (Dynamic Method
Dispatch)
 Method overriding says child class has the same method
as declared in the parent class
 It means if child class provides the specific
implementation of the method that has been provided by
one of its parent class, then it is known as method
overriding
POLYMORPHIC BEHAVIOUR

 It is possible to create a reference of a


base class type which refers to a
concrete object of child class type
 This reference (‘animal’) can then be
used to call any method which is
common for every animal
 Because the reference itself is of base
class type, it provides only methods
of that base class (e.g., Animal)
 It means that if a subclass has some
additional methods, it is not available
using that reference of a base class
type
EXAMPLE
TYPE CASTING
(NARROWING CONVERSION)
 An object of a subclass can be treated as an object of its
superclass, but not vice versa!
 Type casting:
 Upcasting – casting to a supertype (can be implicit)
 Downcasting – casting to a subtype (must be explicit)
This is redundant,
 Example: since upcasting can be
done implicitly

Hint: Whenever you cast to some


type, you must be sure that casting
can take place. Otherwise,
ClassCastException will be thrown at
runtime

 Although it’s allowed, you should generally avoid downcasting


IS THIS CLASS REAL?
 The implementation of
makeSound() method is not
really making a sound
 It was written for the case
when a specific animal`s
sound was not defined
when subclass of animal misses its
own implementation of
makeSound() method
 Is it normal to create an
object of Animal?
 The class Animal is in fact an
abstraction
ABSTRACT CLASS
 “Sometimes it’s useful to declare classes – called abstract
classes – for which you never intend to create objects”
 Used only as superclasses in inheritance hierarchies to
improve code reuse and allow polymorphism
 Cannot be used to instantiate objects—abstract classes are
incomplete
 Subclasses must declare the “missing pieces” to become
“concrete” classes, from which you can instantiate objects.
Otherwise, these subclasses will be abstract too.
 An abstract class provides a superclass from which other
classes can inherit and thus share a common design
 Classes that can be used to instantiate objects are called
concrete classes
ABSTRACT CLASS

 Such classes provide implementations of every method they declare


 Abstract superclasses are too general to create real objects – they specify
only what is common among subclasses
 You make a class abstract by declaring it with keyword abstract
 An abstract class normally contains one or more abstract methods
 An abstract method is one with keyword abstract in its declaration, as in

 Abstract methods do not provide implementations


 A class that contains at least one abstract method must be an abstract
class
 Constructors and static methods cannot be declared abstract
ABSTRACT CLASS RULES
 It is impossible to instantiate an
object using abstract class
 Abstract class may contain both
abstract and non-abstract methods
 Abstract class can have constructors
and static methods
 The abstract keyword in Java is used
to create
 an abstract class
 an abstract method
PREVIOUS EXAMPLE
CURRENT EXAMPLE
INTERFACES

 An interface in Java defines a set of services – but without providing an


implementation – it contains only abstract methods
 An interface is not a class - so we cannot create objects of an interface
 However, an interface defines a type - an interface type - and we can declare
references of this type
 A reference of an interface type can denote objects of all classes that
implements the interface
 With an interface type reference, we can therefore get access to all services that
the interface defines
INTERFACES

 Interfaces offer a capability requiring that unrelated


classes implement a set of common methods
 Interfaces define and standardize the ways in which
things such as people and systems can interact
with one another
 An interface declaration begins with the keyword
interface and contains only constants and abstract
methods
 Interface methods are implicitly public and its
fields are implicitly final and static
 A class that does not implement at least one
interface method must be an abstract class
EXAMPLE
ANOTHER EXAMPLE
FINAL METHODS AND
CLASSES
 final keyword is not only for constants
 final Methods Cannot Be Overridden
 Methods that are declared static are also implicitly final
 final methods are resolved at compile time—this is known
as static binding
 A final class cannot be extended to create a subclass
 All methods in a final class are implicitly final
 Class String is an example of a final class
 Hint: unless you carefully design a class for extension,
you should declare the class as final to avoid (often
subtle) errors
EXAMPLE
LITERATURE
Java: How to Program (Early Objects), 11th Edition, by Paul
Deitel and Harvey Deitel, Pearson
 Chapter 10
GOOD LUCK!

You might also like