Java Inheritance and Polymorphism

 
COP3804 - INTERMEDIATE JAVA
 
Inheritance, Polymorphism, Interfaces
 
Inheritance
 
Classes can derive from other classes, thereby inheriting their fields
and methods.
A class that is derived from another class is called a subclass (also
called a derived class, extended class, or child class).
The class from which the subclass is derived is called a superclass
(also called a base class or a parent class).
In Java, there is single inheritance, every class can have only one
direct superclass.
Classes that do not explicitly extend any class are implicitly a
subclass of Object.
Object has no superclass.
 
Inheritance
 
Inheritance
 
Constructors are not inherited but they can be invoked from the
subclass constructors using the 
super
 keyword.
If Java provides a default constructor for the superclass, or a no-
argument constructor was written into the superclass, then that
constructor will be implicitly called just before a subclass constructor
executes.
 
Otherwise, at the beginning of a subclass’ constructor, there must be
a call to one of the constructors in the superclass.
 
Inheritance
 
Method Overriding:
When you write a new instance method in the subclass that has the
same signature as a method in the superclass. The version of the
method executed depends on the type of the object on which the
method gets called.
 
Example:
The toString method gets overridden in the MountainBike class.
 
If the method gets called on an object of type Bicycle, the version
that executes is the one in the superclass.
 
If the method gets called on an object of type MountainBike , the
version that returns cadence, speed, gear, and suspension is the
one that gets executed.
 
Inheritance
 
Method Overloading:
When you write two or more methods within the same class that have
the same name but different number or type of parameters.
The version of the method that gets executed depends on the
arguments passed when calling the method.
 
Example:
public void setSuspension(String suspensionType)
{ suspension = suspensionType; }
 
public void setSuspension()
{ suspension = "dual”; }
 
bike.setSuspension(“rear”); 
 
// the first version gets executed
bike.setSuspension( );
  
// the second version gets executed
 
 
Inheritance
 
I
f
 
a
 
c
l
a
s
s
 
i
s
 
d
e
c
l
a
r
e
d
 
w
i
t
h
 
t
h
e
 
f
i
n
a
l
 
k
e
y
w
o
r
d
,
 
i
t
 
c
a
n
n
o
t
 
b
e
s
u
b
c
l
a
s
s
e
d
.
 
M
e
t
h
o
d
s
 
c
a
n
 
b
e
 
d
e
c
l
a
r
e
d
 
f
i
n
a
l
 
i
f
 
t
h
e
i
r
 
i
m
p
l
e
m
e
n
t
a
t
i
o
n
 
s
h
o
u
l
d
n
o
t
 
b
e
 
c
h
a
n
g
e
d
 
b
y
 
t
h
e
 
s
u
b
c
l
a
s
s
e
s
.
 
Inheritance
 
I
f
 
a
 
c
l
a
s
s
 
i
s
 
d
e
c
l
a
r
e
d
 
w
i
t
h
 
t
h
e
 
a
b
s
t
r
a
c
t
 
k
e
y
w
o
r
d
,
 
i
t
 
c
a
n
n
o
t
 
b
e
i
n
s
t
a
n
t
i
a
t
e
d
.
 
If a class has at least one abstract method, the class is
abstract.
 
An abstract method does not have an implementation, only the
header terminated by a semicolon.
 
Abstract classes might be too general to know the details on
how to implement the methods, so they force the subclasses to
provide the implementation for them.
 
C
l
a
s
s
e
s
 
t
h
a
t
 
a
r
e
 
n
o
t
 
a
b
s
t
r
a
c
t
 
a
r
e
 
s
o
m
e
t
i
m
e
s
 
c
a
l
l
e
d
 
c
o
n
c
r
e
t
e
c
l
a
s
s
e
s
.
 
Polymorphism
 
Polymorphism, which means ability to take many forms, allows reference
variables to reference objects of the same type or objects of a subclass of
that type.
 
When the reference type is of a superclass, even if the object it refers to is of
a subclass, the compiler only lets you call methods of the superclass.
 
Example:
Bicycle bike = new MountainBike(…);
bike. getSuspension();
 
// this gives an error
 
The compiler only knows the methods in the variable data type (Bicycle
class).
If you need to access the methods in the subclass, use the cast operator.
 
Polymorphism
 
When a superclass variable references a subclass object, and the subclass
has an overridden method, the Java virtual machine waits until run time to
find out which method to call depending on the type of the object.
 
i.e.
Bicycle aBike = new Bicycle(…);
Bicycle aMountainBike = new MountainBike(…);
aBike.toString();
aMountainBike.toString();
 
The type of both variables is Bicycle, but they refer to objects in memory of type
Bicycle and MountainBike respectively.
Both classes have a different implementation for the toString method. The JVM
waits until runtime to determine which method will get executed (depending on
the actual type of the object.)
 
Polymorphism
 
The cast operator lets you convert a general type reference
into a specific type reference.
i.e.
Bicycle bike = new MountainBike(…);
MountainBike mBike = (MountainBike)bike;
 
 
Before using the cast operator, use the 
instanceof
 operator to
make sure an object belongs to a particular type.
i.e.
if( bike instanceof MountainBike)
 
MountainBike mBike = (MountainBike)bike;
 
Interface
 
An interface is a reference type similar to a class.
 
They specify behavior for the classes that implement them.
 
They contain a group of related methods with empty bodies.
 
They may also contain static constant declarations.
 
Interfaces cannot be instantiated, only implemented by classes.
 
 
Interface vs. Class
 
An interface is not a class, even if their declarations are similar.
 
A class describes the attributes and behavior of the objects created from it,
whereas an interface contains the list of behaviors that a class implements.
 
Interfaces do not have any constructors.
 
They cannot contain instance variables, only static constants.
 
All methods declared in an interface are public, even if the public modifier is
omitted.
 
All methods in an interface type are 
abstract
; that is, they have a name,
parameters, and a return type, but they don’t have an implementation.
 
When the type of a reference variable is an interface, the object it refers to
must be of a class that implements the interface.
 
Syntax for Interface Declaration
 
 
Implementing Interfaces
 
Classes that implement an interface need to provide the
implementation for the methods.
 
When a class says that it implements an interface, it's like
a promise the class makes to the outside world to provide
those methods.
 
To declare a class that implements an interface, include
the 
implements
 clause in the class declaration.
 
Implementing Interfaces
 
References
 
 
Horstmann, Cay. Big Java 4th ed. New York, USA: John
Wiley & Sons, Inc., 2010.
 
Oracle. The Java Tutorials, 2013. Web. 25 Aug. 2013.
http://docs.oracle.com/javase/tutorial/index.html
 
Gaddis, Tony, and Godfrey Muganda. Starting out with
Java: from Control Structures through Data Structures 2
nd
ed. Boston, USA: Addison-Wesley, 2012
 
 
Slide Note
Embed
Share

In Java, classes can inherit fields and methods from other classes through inheritance. Constructors are not inherited but can be invoked using the super keyword. Method overriding and overloading allow for customizing behavior in subclasses. The final keyword can prevent subclassing a class or changing method implementation.

  • Java
  • Inheritance
  • Polymorphism
  • Constructors
  • Methods

Uploaded on Sep 17, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. COP3804 - INTERMEDIATE JAVA Inheritance, Polymorphism, Interfaces

  2. Inheritance Classes can derive from other classes, thereby inheriting their fields and methods. A class that is derived from another class is called a subclass (also called a derived class, extended class, or child class). The class from which the subclass is derived is called a superclass (also called a base class or a parent class). In Java, there is single inheritance, every class can have only one direct superclass. Classes that do not explicitly extend any class are implicitly a subclass of Object. Object has no superclass.

  3. Inheritance

  4. Inheritance Constructors are not inherited but they can be invoked from the subclass constructors using the super keyword. If Java provides a default constructor for the superclass, or a no- argument constructor was written into the superclass, then that constructor will be implicitly called just before a subclass constructor executes. Otherwise, at the beginning of a subclass constructor, there must be a call to one of the constructors in the superclass.

  5. Inheritance Method Overriding: When you write a new instance method in the subclass that has the same signature as a method in the superclass. The version of the method executed depends on the type of the object on which the method gets called. Example: The toString method gets overridden in the MountainBike class. If the method gets called on an object of type Bicycle, the version that executes is the one in the superclass. If the method gets called on an object of type MountainBike , the version that returns cadence, speed, gear, and suspension is the one that gets executed.

  6. Inheritance Method Overloading: When you write two or more methods within the same class that have the same name but different number or type of parameters. The version of the method that gets executed depends on the arguments passed when calling the method. Example: public void setSuspension(String suspensionType) { suspension = suspensionType; } public void setSuspension() { suspension = "dual ; } bike.setSuspension( rear ); bike.setSuspension( ); // the first version gets executed // the second version gets executed

  7. Inheritance If a class is declared with the final keyword, it cannot be subclassed. Methods can be declared final if their implementation should not be changed by the subclasses.

  8. Inheritance If a class is declared with the abstract keyword, it cannot be instantiated. If a class has at least one abstract method, the class is abstract. An abstract method does not have an implementation, only the header terminated by a semicolon. Abstract classes might be too general to know the details on how to implement the methods, so they force the subclasses to provide the implementation for them. Classes that are not abstract are sometimes called concrete classes.

  9. Polymorphism Polymorphism, which means ability to take many forms, allows reference variables to reference objects of the same type or objects of a subclass of that type. When the reference type is of a superclass, even if the object it refers to is of a subclass, the compiler only lets you call methods of the superclass. Example: Bicycle bike = new MountainBike( ); bike. getSuspension(); // this gives an error The compiler only knows the methods in the variable data type (Bicycle class). If you need to access the methods in the subclass, use the cast operator.

  10. Polymorphism When a superclass variable references a subclass object, and the subclass has an overridden method, the Java virtual machine waits until run time to find out which method to call depending on the type of the object. i.e. Bicycle aBike = new Bicycle( ); Bicycle aMountainBike = new MountainBike( ); aBike.toString(); aMountainBike.toString(); The type of both variables is Bicycle, but they refer to objects in memory of type Bicycle and MountainBike respectively. Both classes have a different implementation for the toString method. The JVM waits until runtime to determine which method will get executed (depending on the actual type of the object.)

  11. Polymorphism The cast operator lets you convert a general type reference into a specific type reference. i.e. Bicycle bike = new MountainBike( ); MountainBike mBike = (MountainBike)bike; Before using the cast operator, use the instanceof operator to make sure an object belongs to a particular type. i.e. if( bike instanceof MountainBike) MountainBike mBike = (MountainBike)bike;

  12. Interface An interface is a reference type similar to a class. They specify behavior for the classes that implement them. They contain a group of related methods with empty bodies. They may also contain static constant declarations. Interfaces cannot be instantiated, only implemented by classes.

  13. Interface vs. Class An interface is not a class, even if their declarations are similar. A class describes the attributes and behavior of the objects created from it, whereas an interface contains the list of behaviors that a class implements. Interfaces do not have any constructors. They cannot contain instance variables, only static constants. All methods declared in an interface are public, even if the public modifier is omitted. All methods in an interface type are abstract; that is, they have a name, parameters, and a return type, but they don t have an implementation. When the type of a reference variable is an interface, the object it refers to must be of a class that implements the interface.

  14. Syntax for Interface Declaration

  15. Implementing Interfaces Classes that implement an interface need to provide the implementation for the methods. When a class says that it implements an interface, it's like a promise the class makes to the outside world to provide those methods. To declare a class that implements an interface, include the implements clause in the class declaration.

  16. Implementing Interfaces

  17. References Horstmann, Cay. Big Java 4th ed. New York, USA: John Wiley & Sons, Inc., 2010. Oracle. The Java Tutorials, 2013. Web. 25 Aug. 2013. http://docs.oracle.com/javase/tutorial/index.html Gaddis, Tony, and Godfrey Muganda. Starting out with Java: from Control Structures through Data Structures 2nd ed. Boston, USA: Addison-Wesley, 2012

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#