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

OOP Concepts Part 2 - Inheritance

The document discusses object-oriented programming features related to inheritance. It covers key concepts like inheritance allowing child classes to inherit attributes and operations from parent classes. The document describes different types of inheritance like single and multiple inheritance. It highlights benefits like reusability and discusses inheritance in the context of "is-a" relationships. Examples are provided to demonstrate inheritance in Java applications.

Uploaded by

Janina Cope
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views

OOP Concepts Part 2 - Inheritance

The document discusses object-oriented programming features related to inheritance. It covers key concepts like inheritance allowing child classes to inherit attributes and operations from parent classes. The document describes different types of inheritance like single and multiple inheritance. It highlights benefits like reusability and discusses inheritance in the context of "is-a" relationships. Examples are provided to demonstrate inheritance in Java applications.

Uploaded by

Janina Cope
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 26

Object-oriented

Programming Features
Part 2
Inheritance
Learning Objectives
 In this lesson, you will learn to:
◦ understand the concept of software reuse
◦ distinguish the types of inheritance
◦ explain the benefits of using inheritance
◦ apply inheritance in a Java application
◦ identify the rules and restrictions in using
inheritance
Inheritance
 Inheritance allows child classes to inherit the
characteristics of an existing parent class
◦ Attributes (fields and properties)
◦ Operations (methods)
 Child class can extend the parent class
◦ Add new fields and methods
◦ Redefine methods (modify existing behavior)
 The aim of inheritance is to provide the reusability
of code so that a class has to write only the unique
features and rest of the common properties and
functionalities can be extended from the another
class.
Types of Inheritance
 Inheritance terminology
Inheritance – Benefits
 Inheritance has a lot of benefits
◦ Extensibility
◦ Reusability
◦ Provides abstraction
◦ Eliminates redundant code
 Use inheritance for building “is-a”
relationships
◦ E.g. dog is-a animal (dogs are kind of animals)
 Don't use it to build “has-a” relationship
◦ E.g. dog has-a name (dog is not kind of name)
Inheritance – Example
Types of Inheritance

Java supports only single-inheritance


so this one is not applicable
Class Hierarchies
 Inheritance leads to a
hierarchy of classes
and/or interfaces in
an application:
 The general

characteristics are
specified high up in
the hierarchy
 More specific

characteristics are
specified below the
hierarchy
Inheritance in Java
 A class can inherit only one base class
◦ Example: public class B extends A

 A class can implement several interfaces


◦ Example: public class B implements IX, IY, IZ

 A class can extend one class and implement


several interfaces
◦ Example: public class B extends A implements IX,
IY, IZ
How to Define Inheritance?
 We must specify the name of the base class after
the name of the derived
public class Shape
{...}

public class Circle extends Shape


{...}
 In the constructor of the derived class we use the
keyword super to invoke the constructor of the
base class
public Circle (int x, int y)
{

super(x);
...

}
Simple Inheritance Example
public class Mammal public class Dog extends Mammal
{ {
public int age; public String breed;

public void Sleep() public Dog(String breed)


{ {
System.out.println("Shhh! I'm this.breed = breed;
sleeping!"); }
}
} public void WagTail()
{
System.out.println("Tailwagging...");
}
}
Inheritance: Adding Functionality
 Subclasses have all of the data members and
methods of the superclass
 Subclasses can add to the superclass
◦ Additional data members
◦ Additional methods
 Subclasses are more specific and have more
functionality
Inheritance: Important Aspects
 In Java, there is no multiple inheritance
◦ Only multiple interfaces can be implemented
 Constructors are not inherited
 Inheritance is transitive relation
◦ If C is derived from B, and B is derived from A, then
C inherits A as well
Inheritance: Important Features
 A derived class extends its base class
◦ It can add new members but cannot remove derived
ones
 Declaring new members with the same name
or signature hides the inherited ones
Inheritance and Accessibility
class Creature class Dog extends Mammal
{ {
protected String name; String breed;

public String getName(){ public String getBreed() {


return name; return breed;
} }

private void Talk() // super.Talk() cannot be invoked here (it is private)


{ }
System.out.println("I am creature ...");
} class InheritanceAndAccessibility
{
protected void Walk() static void Main()
{ {
System.out.println("Walking ...");
} Dog joe = new Dog();
} System.out.println(joe.getBreed());
--------------------------------------------- // joe.Walk() is protected and can not be invoked
// joe.Talk() is private and can not be invoked
class Mammal extends Creature // joe.name = "Rex"; // Name cannot be accessed here
{ // joe.breed = "Shih Tzu"; // Can't modify breed
// super.Talk() can be invoked here }
// name can be read but cannot be modified }
here
}
The Object class
 In Java, all classes are (direct or indirect)
subclasses of the Object class.
 It is the root of the inheritance hierarchy in Java
 If a class is not declared to inherit from another
then it implicitly inherits from the Object class
 It defines a ToString() method which could be
overriden by the subclasses.
 Example: From a class named Book
public String ToString()
{
return super.ToString() + “ by “ + author;
}
Summary
◦ Software reuse
◦ Types of inheritance
◦ Benefits of inheritance
◦ Inheritance in a Java
◦ Inheritance and Accessibility
Polymorphism
 Polymorphism is the ability to take more
than one form (objects have more than
one type)
◦ A class can be used through its parent
interface. E.g. Circle class and Rectangle
class inherit from Shape class
Shape shape = new Circle();
shape = new Rectangle();

◦ A child class may override some of the


behaviors of the parent class
Polymorphism
 Why handle an object of given type as object
of its base type?
 E.g. Shape shape = new Circle();
◦ To invoke abstract operations
◦ To mix different related types in the same collection
 E.g.

ArrayList <Circle> circles = new ArrayList <Circle>();


ArrayList <Rectangle> circles = new ArrayList <Rectangle>();

ArrayList <Shape> circles = new ArrayList <Shape>();


Polymorphism
◦ To pass a more specific object to a method that expects
a parameter of a more generic type
◦ To declare a more generic field which will be initialized
and "specialized" later.
◦ E.g. Circle and Rectangle inherits from Shape
Polymorphism: How it works?
 Polymorphism ensures that the appropriate
method of the subclass is called through its
base class' interface
 Polymorphism is implemented using a

technique called late method binding


◦ Exact method to be called is determined at runtime,
just before performing the call
 Note: Late binding is slower than normal
(early) binding
Example:

You might also like