SlideShare a Scribd company logo
1 of 28
INHERITANCE
Chapter 10
INHERITANCE
 Mechanism for enhancing existing classes
 You need to implement a new class
 You have an existing class that represents a more
general concept is already available.
 New class can inherit from the existing class.
 Example
 BankAccount
 SavingsAccount
 Most of the methods of bank account apply to savings
account
 You need additional methods.
 In savings account you only specify new methods.
INHERITANCE
 More generic form is super class.
 Class that inherits from super class is subclass.
 One advantage – code reuse
public class SavingsAccount extends BankAccount
{
public void addInterest()
{
double interest = getBalance() *
interestRate / 100;
deposit(interest);
}
private double interestRate;
}
INHERITANCE
 BankAccount will have the methods
 deposit( )
 withdraw( )
 getBalance( )
 SavingsAccount will have the methods
 deposit( )
 withdraw( )
 getBalance( )
 addInterest( )
HIERARCHIES
Archosaurs
Thecodonts Pterosaurs Dinosaurs
Saurischians Ornithischians
Crocodilians
Every class extends the Object
class either directly or indirectly
An Inheritance Diagram
RELOOK AT SAVINGSACCOUNT
public class SavingsAccount extends BankAccount
{
public void addInterest()
{
double interest = getBalance() *
interestRate /
100;
deposit(interest);
}
private double interestRate;
}
• Encapsulation: addInterest calls
getBalance rather than updating the
balance field of the superclass (field is
private)
• Note that addInterest calls
getBalance without specifying an implicit
parameter (the calls apply to the same object)
An Introduction to Inheritance
BigJavabyCayHorstmann
Copyright©2008byJohnWiley&Sons.Allrights
reserved.
SavingsAccount object inherits the balance
instance field from BankAccount, and gains one
additional instance field: interestRate:
Layout of a Subclass Object
CHECK
 If the class Manager extends the class Employee,
which class is the superclass and which is the
subclass?
• Consider a bank that offers its customers the following account
types:
1. Checking account: no interest; small number of free
transactions per month, additional transactions are
charged a small fee
2. Savings account: earns interest that compounds
monthly
• Inheritance hierarchy:
• All bank accounts support the getBalance method
• All bank accounts support the deposit and withdraw
methods, but the implementations differ
• Checking account needs a method deductFees; savings
account needs a method addInterest
Hierarchy of Bank Accounts
• Override method:
• Supply a different implementation of a method that
exists in the superclass
• Must have same signature (same name and same
parameter types)
• If method is applied to an object of the subclass
type, the overriding method is executed
• Inherit method:
• Don't supply a new implementation of a method that
exists in superclass
•Superclass method can be applied to the
subclass objects
• Add method:
• Supply a new method that doesn't exist in the
superclass
• New method can be applied only to subclass
objects
Inheriting Methods
• Can't override fields
• Inherit field: All fields from the superclass are
automatically inherited
• Add field: Supply a new field that doesn't exist
in the superclass
• What if you define a new field with the same
name as a superclass field?
• Each object would have two instance
fields of the same name
• Fields can hold different values
• Legal but extremely undesirable
Inheriting Instance Fields
• Consider deposit method of
CheckingAccount
public void deposit(double amount)
{
transactionCount++;
// now add amount to balance
. . .
}
• Can't just add amount to balance
• balance is a private field of the superclass
• A subclass has no access to private fields of its
superclass
• Subclass must use public interface
Inherited Fields are Private
• Can't just call
deposit(amount)
in deposit method of CheckingAccount
• That is the same as
this.deposit(amount)
• Calls the same method
• Instead, invoke superclass method
super.deposit(amount)
• Now calls deposit method of BankAccount
class
Invoking a Superclass Method
• Complete method:
public void deposit(double amount)
{
transactionCount++;
// Now add amount to balance
super.deposit(amount);
}
Invoking a Superclass Method
SUBCLASS CONSTRUCTOR
 You write a constructor in the subclass
 Call the super class constructor
 Use the word super
 Must be the first statement of the subclass constructor
• If subclass constructor doesn't call superclass
constructor, default superclass constructor is used
•Default constructor: constructor with no
parameters
•If all constructors of the superclass
require parameters, then the compiler
reports an error
Subclass Construction
• Ok to convert subclass reference to superclass
reference
SavingsAccount collegeFund = new
SavingsAccount(10);
BankAccount anAccount =
collegeFund;
Object anObject = collegeFund;
• The three object references stored in
collegeFund, anAccount, and
anObject all refer to the same object of type
SavingsAccount
Converting Between Subclass and Superclass
Types
Converting Between Subclass and Superclass Types
• Superclass references don't know the full story:
anAccount.deposit(1000); // OK
anAccount.addInterest();
// No--not a method of the class
to which anAccount
belongs
• When you convert between a subclass object to its
superclass type:
• The value of the reference stays the same – it is
the memory location of the object
• But, less information is known about the object
Converting Between Subclass and Superclass
Types
• Why would anyone want to know less about an object?
• Reuse code that knows about the superclass but not the subclass:
public void transfer(double amount, BankAccount other)
{
withdraw(amount);
other.deposit(amount);
}
Can be used to transfer money from any type of
BankAccount
Converting Between Subclass and Superclass Types (cont.)
• Occasionally you need to convert from a superclass reference
to a subclass reference
BankAccount anAccount = (BankAccount)
anObject;
• This cast is dangerous: if you are wrong, an exception is
thrown
• Solution: use the instanceof operator
• instanceof: tests whether an object belongs to a
particular type
if (anObject instanceof BankAccount)
{
BankAccount anAccount = (BankAccount)
anObject;
. . .
}
Converting Between Subclass and Superclass Types
• In Java, type of a variable doesn't completely
determine type of object to which it refers
BankAccount aBankAccount = new
SavingsAccount(1000); // aBankAccount
holds a reference to a SavingsAccount
• Method calls are determined by type of actual object, not
type of object reference
BankAccount anAccount = new
CheckingAccount();
anAccount.deposit(1000); // Calls
"deposit" from
CheckingAccount
• Compiler needs to check that only legal methods are
invoked Object anObject = new
BankAccount();
anObject.deposit(1000); // Wrong!
Polymorphism
• Polymorphism: ability to refer to objects of multiple types with varying
behavior
• Polymorphism at work:
public void transfer(double amount, BankAccount
other)
{
withdraw(amount); // Shortcut for
this.withdraw(amount)
other.deposit(amount);
}
• Depending on types of amount and other, different versions of
withdraw and deposit are called
Polymorphism
• Java has four levels of controlling access to fields, methods, and
classes:
• public access
oCan be accessed by methods of all classes
• private access
oCan be accessed only by the methods of their own
class
• protected access
• package access
oThe default, when no access modifier is given
oCan be accessed by all classes in the same
package
oGood default for classes, but extremely
unfortunate for fields
Access Control
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no
modifier
Y Y N N
private Y N N N
The following table shows the access to members
permitted by each modifier.
http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
• All classes defined without an explicit extends clause automatically extend Object
Object: The Cosmic Superclass

More Related Content

Viewers also liked

Object oriented programming-with_java
Object oriented programming-with_javaObject oriented programming-with_java
Object oriented programming-with_javaHoang Nguyen
 
Google mock for dummies
Google mock for dummiesGoogle mock for dummies
Google mock for dummiesHoang Nguyen
 
QUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGING
QUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGINGQUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGING
QUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGINGSapan Pandya
 
Fulbright Vita Marianne Johnson
Fulbright Vita Marianne JohnsonFulbright Vita Marianne Johnson
Fulbright Vita Marianne JohnsonMarianne Johnson
 
Métodos y estrategias en computación informática para educacion.pptx
Métodos y estrategias en computación informática para educacion.pptxMétodos y estrategias en computación informática para educacion.pptx
Métodos y estrategias en computación informática para educacion.pptxPamela Tiznado
 
Interpretasi
InterpretasiInterpretasi
InterpretasiMir ra
 
Paulus over trouwen
Paulus over trouwenPaulus over trouwen
Paulus over trouwengoedbericht
 
Podcast Analysis
Podcast AnalysisPodcast Analysis
Podcast AnalysisSolomben
 
Big picture of data mining
Big picture of data miningBig picture of data mining
Big picture of data miningHoang Nguyen
 
Data mining maximumlikelihood
Data mining maximumlikelihoodData mining maximumlikelihood
Data mining maximumlikelihoodHoang Nguyen
 
Optimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessorsOptimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessorsHoang Nguyen
 
Exception handling
Exception handlingException handling
Exception handlingHoang Nguyen
 

Viewers also liked (20)

Object oriented programming-with_java
Object oriented programming-with_javaObject oriented programming-with_java
Object oriented programming-with_java
 
Google mock for dummies
Google mock for dummiesGoogle mock for dummies
Google mock for dummies
 
Gm theory
Gm theoryGm theory
Gm theory
 
Learn rubyintro
Learn rubyintroLearn rubyintro
Learn rubyintro
 
Html5
Html5Html5
Html5
 
Linked list
Linked listLinked list
Linked list
 
Stack queue
Stack queueStack queue
Stack queue
 
QUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGING
QUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGINGQUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGING
QUALITY ASPECTS OF RIGID PET FOR BEVERAGE PACKAGING
 
Fulbright Vita Marianne Johnson
Fulbright Vita Marianne JohnsonFulbright Vita Marianne Johnson
Fulbright Vita Marianne Johnson
 
Métodos y estrategias en computación informática para educacion.pptx
Métodos y estrategias en computación informática para educacion.pptxMétodos y estrategias en computación informática para educacion.pptx
Métodos y estrategias en computación informática para educacion.pptx
 
El discípulo amado
El discípulo amadoEl discípulo amado
El discípulo amado
 
Interpretasi
InterpretasiInterpretasi
Interpretasi
 
Paulus over trouwen
Paulus over trouwenPaulus over trouwen
Paulus over trouwen
 
Podcast Analysis
Podcast AnalysisPodcast Analysis
Podcast Analysis
 
Exception
ExceptionException
Exception
 
Big picture of data mining
Big picture of data miningBig picture of data mining
Big picture of data mining
 
Data mining maximumlikelihood
Data mining maximumlikelihoodData mining maximumlikelihood
Data mining maximumlikelihood
 
Optimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessorsOptimizing shared caches in chip multiprocessors
Optimizing shared caches in chip multiprocessors
 
Data preperation
Data preperationData preperation
Data preperation
 
Exception handling
Exception handlingException handling
Exception handling
 

Similar to Inheritance

Synapseindia strcture of dotnet development part 2
Synapseindia strcture of dotnet development part 2Synapseindia strcture of dotnet development part 2
Synapseindia strcture of dotnet development part 2Synapseindiappsdevelopment
 
Java 102 intro to object-oriented programming in java
Java 102   intro to object-oriented programming in javaJava 102   intro to object-oriented programming in java
Java 102 intro to object-oriented programming in javaagorolabs
 
class as the basis.pptx
class as the basis.pptxclass as the basis.pptx
class as the basis.pptxEpsiba1
 
Classes, Objects and Method - Object Oriented Programming with Java
Classes, Objects and Method - Object Oriented Programming with JavaClasses, Objects and Method - Object Oriented Programming with Java
Classes, Objects and Method - Object Oriented Programming with JavaRadhika Talaviya
 
Object Oriented PHP - PART-1
Object Oriented PHP - PART-1Object Oriented PHP - PART-1
Object Oriented PHP - PART-1Jalpesh Vasa
 
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.pptAshwathGupta
 
Object Oriented Programming C#
Object Oriented Programming C#Object Oriented Programming C#
Object Oriented Programming C#Muhammad Younis
 
JAVA Polymorphism
JAVA PolymorphismJAVA Polymorphism
JAVA PolymorphismMahi Mca
 
Lecture d-inheritance
Lecture d-inheritanceLecture d-inheritance
Lecture d-inheritanceTej Kiran
 
Ap Power Point Chpt4
Ap Power Point Chpt4Ap Power Point Chpt4
Ap Power Point Chpt4dplunkett
 

Similar to Inheritance (20)

ch10.ppt
ch10.pptch10.ppt
ch10.ppt
 
Synapseindia strcture of dotnet development part 2
Synapseindia strcture of dotnet development part 2Synapseindia strcture of dotnet development part 2
Synapseindia strcture of dotnet development part 2
 
Java 102 intro to object-oriented programming in java
Java 102   intro to object-oriented programming in javaJava 102   intro to object-oriented programming in java
Java 102 intro to object-oriented programming in java
 
class as the basis.pptx
class as the basis.pptxclass as the basis.pptx
class as the basis.pptx
 
Lecture 2 inheritance
Lecture 2    inheritanceLecture 2    inheritance
Lecture 2 inheritance
 
Inheritance
InheritanceInheritance
Inheritance
 
CiIC4010-chapter-2-f17
CiIC4010-chapter-2-f17CiIC4010-chapter-2-f17
CiIC4010-chapter-2-f17
 
Classes, Objects and Method - Object Oriented Programming with Java
Classes, Objects and Method - Object Oriented Programming with JavaClasses, Objects and Method - Object Oriented Programming with Java
Classes, Objects and Method - Object Oriented Programming with Java
 
Classes2
Classes2Classes2
Classes2
 
inheritance and polymorphism
inheritance and polymorphisminheritance and polymorphism
inheritance and polymorphism
 
Object Oriented PHP - PART-1
Object Oriented PHP - PART-1Object Oriented PHP - PART-1
Object Oriented PHP - PART-1
 
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
5. OBJECT ORIENTED PROGRAMMING USING JAVA - INHERITANCE.ppt
 
Object Oriented Programming C#
Object Oriented Programming C#Object Oriented Programming C#
Object Oriented Programming C#
 
Inheritance
InheritanceInheritance
Inheritance
 
Icom4015 lecture7-f16
Icom4015 lecture7-f16Icom4015 lecture7-f16
Icom4015 lecture7-f16
 
JAVA Polymorphism
JAVA PolymorphismJAVA Polymorphism
JAVA Polymorphism
 
Chapter 12
Chapter 12Chapter 12
Chapter 12
 
04inherit
04inherit04inherit
04inherit
 
Lecture d-inheritance
Lecture d-inheritanceLecture d-inheritance
Lecture d-inheritance
 
Ap Power Point Chpt4
Ap Power Point Chpt4Ap Power Point Chpt4
Ap Power Point Chpt4
 

More from Hoang Nguyen

Rest api to integrate with your site
Rest api to integrate with your siteRest api to integrate with your site
Rest api to integrate with your siteHoang Nguyen
 
How to build a rest api
How to build a rest apiHow to build a rest api
How to build a rest apiHoang Nguyen
 
How analysis services caching works
How analysis services caching worksHow analysis services caching works
How analysis services caching worksHoang Nguyen
 
Hardware managed cache
Hardware managed cacheHardware managed cache
Hardware managed cacheHoang Nguyen
 
Directory based cache coherence
Directory based cache coherenceDirectory based cache coherence
Directory based cache coherenceHoang Nguyen
 
Python your new best friend
Python your new best friendPython your new best friend
Python your new best friendHoang Nguyen
 
Python language data types
Python language data typesPython language data types
Python language data typesHoang Nguyen
 
Programming for engineers in python
Programming for engineers in pythonProgramming for engineers in python
Programming for engineers in pythonHoang Nguyen
 
Extending burp with python
Extending burp with pythonExtending burp with python
Extending burp with pythonHoang Nguyen
 
Cobol, lisp, and python
Cobol, lisp, and pythonCobol, lisp, and python
Cobol, lisp, and pythonHoang Nguyen
 
Object oriented programming using c++
Object oriented programming using c++Object oriented programming using c++
Object oriented programming using c++Hoang Nguyen
 
Object oriented analysis
Object oriented analysisObject oriented analysis
Object oriented analysisHoang Nguyen
 
Data structures and algorithms
Data structures and algorithmsData structures and algorithms
Data structures and algorithmsHoang Nguyen
 
Data abstraction the walls
Data abstraction the wallsData abstraction the walls
Data abstraction the wallsHoang Nguyen
 

More from Hoang Nguyen (20)

Rest api to integrate with your site
Rest api to integrate with your siteRest api to integrate with your site
Rest api to integrate with your site
 
How to build a rest api
How to build a rest apiHow to build a rest api
How to build a rest api
 
Api crash
Api crashApi crash
Api crash
 
Smm and caching
Smm and cachingSmm and caching
Smm and caching
 
How analysis services caching works
How analysis services caching worksHow analysis services caching works
How analysis services caching works
 
Hardware managed cache
Hardware managed cacheHardware managed cache
Hardware managed cache
 
Directory based cache coherence
Directory based cache coherenceDirectory based cache coherence
Directory based cache coherence
 
Cache recap
Cache recapCache recap
Cache recap
 
Python your new best friend
Python your new best friendPython your new best friend
Python your new best friend
 
Python language data types
Python language data typesPython language data types
Python language data types
 
Python basics
Python basicsPython basics
Python basics
 
Programming for engineers in python
Programming for engineers in pythonProgramming for engineers in python
Programming for engineers in python
 
Learning python
Learning pythonLearning python
Learning python
 
Extending burp with python
Extending burp with pythonExtending burp with python
Extending burp with python
 
Cobol, lisp, and python
Cobol, lisp, and pythonCobol, lisp, and python
Cobol, lisp, and python
 
Object oriented programming using c++
Object oriented programming using c++Object oriented programming using c++
Object oriented programming using c++
 
Object oriented analysis
Object oriented analysisObject oriented analysis
Object oriented analysis
 
Object model
Object modelObject model
Object model
 
Data structures and algorithms
Data structures and algorithmsData structures and algorithms
Data structures and algorithms
 
Data abstraction the walls
Data abstraction the wallsData abstraction the walls
Data abstraction the walls
 

Recently uploaded

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 

Recently uploaded (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

Inheritance

  • 2. INHERITANCE  Mechanism for enhancing existing classes  You need to implement a new class  You have an existing class that represents a more general concept is already available.  New class can inherit from the existing class.  Example  BankAccount  SavingsAccount  Most of the methods of bank account apply to savings account  You need additional methods.  In savings account you only specify new methods.
  • 3. INHERITANCE  More generic form is super class.  Class that inherits from super class is subclass.  One advantage – code reuse public class SavingsAccount extends BankAccount { public void addInterest() { double interest = getBalance() * interestRate / 100; deposit(interest); } private double interestRate; }
  • 4. INHERITANCE  BankAccount will have the methods  deposit( )  withdraw( )  getBalance( )  SavingsAccount will have the methods  deposit( )  withdraw( )  getBalance( )  addInterest( )
  • 6. Every class extends the Object class either directly or indirectly An Inheritance Diagram
  • 7. RELOOK AT SAVINGSACCOUNT public class SavingsAccount extends BankAccount { public void addInterest() { double interest = getBalance() * interestRate / 100; deposit(interest); } private double interestRate; }
  • 8. • Encapsulation: addInterest calls getBalance rather than updating the balance field of the superclass (field is private) • Note that addInterest calls getBalance without specifying an implicit parameter (the calls apply to the same object) An Introduction to Inheritance
  • 9. BigJavabyCayHorstmann Copyright©2008byJohnWiley&Sons.Allrights reserved. SavingsAccount object inherits the balance instance field from BankAccount, and gains one additional instance field: interestRate: Layout of a Subclass Object
  • 10. CHECK  If the class Manager extends the class Employee, which class is the superclass and which is the subclass?
  • 11. • Consider a bank that offers its customers the following account types: 1. Checking account: no interest; small number of free transactions per month, additional transactions are charged a small fee 2. Savings account: earns interest that compounds monthly • Inheritance hierarchy: • All bank accounts support the getBalance method • All bank accounts support the deposit and withdraw methods, but the implementations differ • Checking account needs a method deductFees; savings account needs a method addInterest Hierarchy of Bank Accounts
  • 12. • Override method: • Supply a different implementation of a method that exists in the superclass • Must have same signature (same name and same parameter types) • If method is applied to an object of the subclass type, the overriding method is executed • Inherit method: • Don't supply a new implementation of a method that exists in superclass •Superclass method can be applied to the subclass objects • Add method: • Supply a new method that doesn't exist in the superclass • New method can be applied only to subclass objects Inheriting Methods
  • 13. • Can't override fields • Inherit field: All fields from the superclass are automatically inherited • Add field: Supply a new field that doesn't exist in the superclass • What if you define a new field with the same name as a superclass field? • Each object would have two instance fields of the same name • Fields can hold different values • Legal but extremely undesirable Inheriting Instance Fields
  • 14. • Consider deposit method of CheckingAccount public void deposit(double amount) { transactionCount++; // now add amount to balance . . . } • Can't just add amount to balance • balance is a private field of the superclass • A subclass has no access to private fields of its superclass • Subclass must use public interface Inherited Fields are Private
  • 15. • Can't just call deposit(amount) in deposit method of CheckingAccount • That is the same as this.deposit(amount) • Calls the same method • Instead, invoke superclass method super.deposit(amount) • Now calls deposit method of BankAccount class Invoking a Superclass Method
  • 16. • Complete method: public void deposit(double amount) { transactionCount++; // Now add amount to balance super.deposit(amount); } Invoking a Superclass Method
  • 17. SUBCLASS CONSTRUCTOR  You write a constructor in the subclass  Call the super class constructor  Use the word super  Must be the first statement of the subclass constructor
  • 18. • If subclass constructor doesn't call superclass constructor, default superclass constructor is used •Default constructor: constructor with no parameters •If all constructors of the superclass require parameters, then the compiler reports an error Subclass Construction
  • 19. • Ok to convert subclass reference to superclass reference SavingsAccount collegeFund = new SavingsAccount(10); BankAccount anAccount = collegeFund; Object anObject = collegeFund; • The three object references stored in collegeFund, anAccount, and anObject all refer to the same object of type SavingsAccount Converting Between Subclass and Superclass Types
  • 20. Converting Between Subclass and Superclass Types
  • 21. • Superclass references don't know the full story: anAccount.deposit(1000); // OK anAccount.addInterest(); // No--not a method of the class to which anAccount belongs • When you convert between a subclass object to its superclass type: • The value of the reference stays the same – it is the memory location of the object • But, less information is known about the object Converting Between Subclass and Superclass Types
  • 22. • Why would anyone want to know less about an object? • Reuse code that knows about the superclass but not the subclass: public void transfer(double amount, BankAccount other) { withdraw(amount); other.deposit(amount); } Can be used to transfer money from any type of BankAccount Converting Between Subclass and Superclass Types (cont.)
  • 23. • Occasionally you need to convert from a superclass reference to a subclass reference BankAccount anAccount = (BankAccount) anObject; • This cast is dangerous: if you are wrong, an exception is thrown • Solution: use the instanceof operator • instanceof: tests whether an object belongs to a particular type if (anObject instanceof BankAccount) { BankAccount anAccount = (BankAccount) anObject; . . . } Converting Between Subclass and Superclass Types
  • 24. • In Java, type of a variable doesn't completely determine type of object to which it refers BankAccount aBankAccount = new SavingsAccount(1000); // aBankAccount holds a reference to a SavingsAccount • Method calls are determined by type of actual object, not type of object reference BankAccount anAccount = new CheckingAccount(); anAccount.deposit(1000); // Calls "deposit" from CheckingAccount • Compiler needs to check that only legal methods are invoked Object anObject = new BankAccount(); anObject.deposit(1000); // Wrong! Polymorphism
  • 25. • Polymorphism: ability to refer to objects of multiple types with varying behavior • Polymorphism at work: public void transfer(double amount, BankAccount other) { withdraw(amount); // Shortcut for this.withdraw(amount) other.deposit(amount); } • Depending on types of amount and other, different versions of withdraw and deposit are called Polymorphism
  • 26. • Java has four levels of controlling access to fields, methods, and classes: • public access oCan be accessed by methods of all classes • private access oCan be accessed only by the methods of their own class • protected access • package access oThe default, when no access modifier is given oCan be accessed by all classes in the same package oGood default for classes, but extremely unfortunate for fields Access Control
  • 27. Access Levels Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y N N N The following table shows the access to members permitted by each modifier. http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
  • 28. • All classes defined without an explicit extends clause automatically extend Object Object: The Cosmic Superclass