What is Inheritance?

Similar documents
CS-202 Introduction to Object Oriented Programming

Inheritance. The Java Platform Class Hierarchy

More On inheritance. What you can do in subclass regarding methods:

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance

Chapter 5 Object-Oriented Programming

OBJECT ORIENTED PROGRAMMING. Course 4 Loredana STANCIU Room B616

Inheritance (Outsource: )

Practice for Chapter 11

Java Object Oriented Design. CSC207 Fall 2014

25. Generic Programming

Inheritance -- Introduction

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.

More About Objects. Zheng-Liang Lu Java Programming 255 / 282

Inheritance (continued) Inheritance

INHERITANCE & POLYMORPHISM. INTRODUCTION IB DP Computer science Standard Level ICS3U. INTRODUCTION IB DP Computer science Standard Level ICS3U

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.

Argument Passing All primitive data types (int etc.) are passed by value and all reference types (arrays, strings, objects) are used through refs.

9 Working with the Java Class Library

Day 4. COMP1006/1406 Summer M. Jason Hinek Carleton University

Outline. Object-Oriented Design Principles. Object-Oriented Design Goals. What a Subclass Inherits from Its Superclass?

Object Oriented Programming is a programming method that combines: Advantage of Object Oriented Programming

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Classes and Inheritance Extending Classes, Chapter 5.2

Programming II (CS300)

ITI Introduction to Computing II

What are the characteristics of Object Oriented programming language?

Lecture 18 CSE11 Fall 2013 Inheritance

More Relationships Between Classes

C08: Inheritance and Polymorphism

Object Oriented Programming. Java-Lecture 11 Polymorphism

Introduction to Inheritance

ITI Introduction to Computing II

Inheritance and Polymorphism

First IS-A Relationship: Inheritance

C08: Inheritance and Polymorphism

C++ Important Questions with Answers

CS Programming I: Inheritance

OVERRIDING. 7/11/2015 Budditha Hettige 82

HAS-A Relationship. If A uses B, then it is an aggregation, stating that B exists independently from A.

Lecture Contents CS313D: ADVANCED PROGRAMMING LANGUAGE. What is Inheritance?

Object Orientated Programming Details COMP360

Pieter van den Hombergh Thijs Dorssers Stefan Sobek. February 10, 2017

Chapter 11 Inheritance and Polymorphism. Motivations. Suppose you will define classes to model circles,

Chapter 5. Inheritance

Binghamton University. CS-140 Fall Dynamic Types

Abstract Classes. Abstract Classes a and Interfaces. Class Shape Hierarchy. Problem AND Requirements. Abstract Classes.

24. Inheritance. Java. Fall 2009 Instructor: Dr. Masoud Yaghini

Rules and syntax for inheritance. The boring stuff

Inheritance and Polymorphism

CS313D: ADVANCED PROGRAMMING LANGUAGE

Java Inheritance. Written by John Bell for CS 342, Spring Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources.

Java Magistère BFA

22. Inheritance. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

Abstract Classes and Polymorphism CSC 123 Fall 2018 Howard Rosenthal

Inheritance Motivation

Inheritance. Inheritance allows the following two changes in derived class: 1. add new members; 2. override existing (in base class) methods.

Programming II (CS300)

Programming overview

Topic 7: Inheritance. Reading: JBD Sections CMPS 12A Winter 2009 UCSC

CS111: PROGRAMMING LANGUAGE II

Exercise: Singleton 1

Java: introduction to object-oriented features

CH. 2 OBJECT-ORIENTED PROGRAMMING

Object Oriented Features. Inheritance. Inheritance. CS257 Computer Science I Kevin Sahr, PhD. Lecture 10: Inheritance

Lecture 2: Java & Javadoc

Programming Language Concepts Object-Oriented Programming. Janyl Jumadinova 28 February, 2017

Interface Class. Lecture 22. Based on Slides of Dr. Norazah Yusof

Chapter 10 Inheritance and Polymorphism. Dr. Hikmat Jaber

Pieter van den Hombergh Thijs Dorssers Stefan Sobek. January 11, 2018

ECE 122. Engineering Problem Solving with Java

OOPs Concepts. 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8.

Java How to Program, 8/e

CISC370: Inheritance

Inheritance and Polymorphism

1 Shyam sir JAVA Notes

Instance Members and Static Members

CSC207H: Software Design. Java + OOP. CSC207 Winter 2018

Agenda. Objects and classes Encapsulation and information hiding Documentation Packages

Data Structures (list, dictionary, tuples, sets, strings)

CS 251 Intermediate Programming Inheritance

Inheritance. Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L

CS313D: ADVANCED PROGRAMMING LANGUAGE

Paytm Programming Sample paper: 1) A copy constructor is called. a. when an object is returned by value

More on Inheritance. Interfaces & Abstract Classes

(SE Tutorials: Learning the Java Language Trail : Interfaces & Inheritance Lesson )

Super-Classes and sub-classes

PROGRAMMING LANGUAGE 2

CREATED BY: Muhammad Bilal Arslan Ahmad Shaad. JAVA Chapter No 5. Instructor: Muhammad Naveed

Comp 249 Programming Methodology Chapter 8 - Polymorphism

Chapter 14 Abstract Classes and Interfaces

CS111: PROGRAMMING LANGUAGE II

Outline. Inheritance. Abstract Classes Interfaces. Class Extension Overriding Methods Inheritance and Constructors Polymorphism.

Object Oriented Programming Part II of II. Steve Ryder Session 8352 JSR Systems (JSR)

COMP200 INTERFACES. OOP using Java, from slides by Shayan Javed

CS260 Intro to Java & Android 03.Java Language Basics

Day 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University

Lecture 4: Extending Classes. Concept

ASSIGNMENT NO 13. Objectives: To learn and understand concept of Inheritance in Java

ECE 122. Engineering Problem Solving with Java

Inheritance. Transitivity

Transcription:

Inheritance 1

Agenda What is and Why Inheritance? How to derive a sub-class? Object class Constructor calling chain super keyword Overriding methods (most important) Hiding methods Hiding fields Type casting Final class and final methods 2

What is Inheritance? 3

What is Inheritance? Inheritance is the concept of a child class (sub class) automatically inheriting the variables and methods defined in its parent class (super class). A primary feature of object-oriented programming along with encapsulation and polymorphism 4

Why Inheritance? Reusability Benefits of Inheritance in OOP : Reusability Once a behavior (method) is defined in a super class, that behavior is automatically inherited by all subclasses Thus, you write a method only once and it can be used by all subclasses. Once a set of properties (fields) are defined in a super class, the same set of properties are inherited by all subclasses A class and its children share common set of properties A subclass only needs to implement the differences between itself and the parent. 5

How to derive a sub-class? 6

extends keyword To derive a child class, we use the extends keyword. Suppose we have a parent class called Person. public class Person { protected String name; protected String address; } /** * Default constructor */ public Person(){ System.out.println( Inside Person:Constructor ); name = ""; address = ""; }.... 7

extends keyword Now, we want to create another class named Student Since a student is also a person, we decide to just extend the class Person, so that we can inherit all the properties and methods of the existing class Person. To do this, we write, public class Student extends Person { public Student(){ System.out.println( Inside Student:Constructor ); }.... } 8

What You Can Do in a Sub-class A subclass inherits all of the public and protected members (fields or methods) of its parent, no matter what package the subclass is in If the subclass is in the same package as its parent, it also inherits the package-private members (fields or methods) of the parent 9

What You Can Do in a Sub-class Regarding Fields The inherited fields can be used directly, just like any other fields. You can declare new fields in the subclass that are not in the super class You can declare a field in the subclass with the same name as the one in the super class, thus hiding it (not recommended). A subclass does not inherit the private members of its parent class. However, if the super class has public or protected methods for accessing its private fields, these can also be used by the subclass. 10

What You Can Do in a Sub-class Regarding Methods The inherited methods can be used directly as they are. You can write a new instance method in the subclass that has the same signature as the one in the super class, thus overriding it. You can write a new static method in the subclass that has the same signature as the one in the super class, thus hiding it. You can declare new methods in the subclass that are not in the super class. 11

Object Class 12

Object Class Object class is mother of all classes In Java language, all classes are sub-classed (extended) from the Object super class Object class is the only class that does not have a parent class Defines and implements behavior common to all classes including the ones that you write getclass() equals() tostring()... 13

Class Hierarchy A sample class hierarchy 14

Super class & Sub class Super class (Parent class) Any class above a specific class in the class hierarchy. Sub class (Child class) Any class below a specific class in the class hierarchy. 15

Constructor Calling Chain 16

How Constructor method of a Super class gets called A subclass constructor invokes the constructor of the super class implicitly When a Student object, a subclass (child class), is instantiated, the default constructor of its super class (parent class), Person class, is invoked implicitly before sub-class's constructor method is invoked A subclass constructor can invoke the constructor of the super explicitly by using the super keyword The constructor of the Student class can explicitly invoke the constructor of the Person class using super keyword Used when passing parameters to the constructor of the super class 17

Example: Constructor Calling Chain To illustrate this, consider the following code, public static void main( String[] args ){ Student anna = new Student(); } In the code, we create an object of class Student. The output of the program is, Inside Person:Constructor Inside Student:Constructor 18

Example: Constructor Calling Chain The program flow is shown below. 19

super keyword 20

The super keyword A subclass can also explicitly call a constructor of its immediate super class. This is done by using the super constructor call. A super constructor call in the constructor of a subclass will result in the execution of relevant constructor from the super class, based on the arguments passed. 21

The super keyword For example, given our previous example classes Person and Student, we show an example of a super constructor call. Given the following code for Student, public Student(){ super( "SomeName", "SomeAddress" ); System.out.println("Inside Student:Constructor"); } 22

The super keyword Few things to remember when using the super constructor call: The super() call must occur as the first statement in a constructor The super() call can only be used in a constructor (not in ordinary methods) 23

The super keyword Another use of super is to refer to members of the super class (just like the this reference ). For example, public Student() { super.name = somename ; super.address = some address ; } 24

Overriding Methods 25

Overriding methods If a derived class needs to have a different implementation of a certain instance method from that of the super class, override that instance method in the sub class Note that the scheme of overriding applies only to instance methods For static methods, it is called hiding methods The overriding method has the same name, number and type of parameters, and return type as the method it overrides The overriding method can also return a subtype of the type returned by the overridden method. This is called a covariant return type 26

Example: Overriding Methods Suppose we have the following implementation for the getname method in the Person super class, public class Person { : : public String getname(){ System.out.println("Parent: getname"); return name; } } 27

Example: Overriding Methods To override the getname method of the super class Person in the subclass Student, reimplement the method with the same signature public class Student extends Person{ : public String getname(){ System.out.println("Student: getname"); return name; } : } Now, when we invoke the getname method of an object of the subclass Student, the getname method of the Student would be called, and the output would be, Student: getname 28

Modifiers in the Overriding Methods The access specifier for an overriding method can allow more, but not less, access than the overridden method For example, a protected instance method in the super class can be made public, but not private, in the subclass. You will get a compile-time error if you attempt to change an instance method in the super class to a class method in the subclass, and vice versa 29

Runtime Polymorphism with Overriding Methods 30

What is Polymorphism? Polymorphism in a Java program The ability of a reference variable to change behavior according to what object instance it is holding. This allows multiple objects of different subclasses to be treated as objects of a single super class, while automatically selecting the proper methods to apply to a particular object based on the subclass it belongs to (We will talk more on Polymorphism during our Polymorphism presentation.) 31

Example: Runtime Polymorphism Code: Result: Person person2 = new Student(); person2.mymethod("test4"); Person person3 = new InternationalStudent(); person3.mymethod("test5"); mymethod(test4) in Student class is called mymethod(test5) in InternationalStudent class is called 32

Hiding Methods 33

Hiding Methods If a subclass defines a class method (static method) with the same signature as a class method in the super class, the method in the subclass hides the one in the super class 34

Example: Coding of Hiding Static Method class Animal { public static void testclassmethod() { System.out.println("The class method in Animal."); } } // The testclassmethod() of the child class hides the one of the // super class it looks like overriding, doesn't it? But // there is difference. We will talk about in the following slide. class Cat extends Animal { public static void testclassmethod() { System.out.println("The class method in Cat."); } } 35

Overriding Method vs. Hiding Method Hiding a static method of a super class looks like overriding an instance method of a super class The difference comes during runtime When you override an instance method, you get the benefit of run-time polymorphism When you override an static method, there is no runt-time polymorphism 36

Example: Overriding Method vs. Hiding Method during Runtime // Create object instance of Cat. Cat mycat = new Cat(); // The object instance is Cat type // and assigned to Animal type variable. Animal myanimal2 = mycat; // For static method, the static method of // the super class gets called. Animal.testClassMethod(); // For instance method, the instance method // of the subclass is called even though // myanimal2 is a super class type. This is // run-time polymorphism. myanimal2.testinstancemethod(); 37

Hiding Fields 38

Hiding Fields Within a sub class, a field that has the same name as a field in the super class hides the super class' field, even if their types are different Within the subclass, the field in the super class cannot be referenced by its simple name Instead, the field must be accessed through super keyword Generally speaking, hiding fields is not a recommended programming practice as it makes code difficult to read 39

Type Casting 40

What is Type? When an object instance is created from a class, we say the object instance is type of the class and its super classes Example: Student student1 = new Student(); student1 object instance is the type of Student or it is Student type student1 object instance is also type of Person if Student is a child class of Person student1 object instance is also type of Object 41

What is Significance? An object instance of a particular type can be used in any place where an instance of the type and its super type is called for Example: student1 object instance is a type of TuftsStudent, Student, and Peson student1 object can be used in any place where object instance of the type of TuftsStudent, Student, or Person is called for This enables polymorphism 42

Implicit Type Casting An object instance of a subclass can be assigned to a variable (reference) of a parent class through implicit type casting this is safe since an object instance of a subclass is also the type of the super class Example Let's assume Student class is a child class of Person class Let's assume TuftsStudent class is a child class of Student class TuftsStudent tuftstudent = new TuftsStudent(); Student student = tuftsstudent; // Implicit type casting Person person = tuftsstudent; // Implicit type casting Object object = tuftsstudent; // Implicit type casting 43

Type Casting between Objects tuftsstudent student TuftsStudent Object instance person 44

Explicit Type Casting An object instance of a super class must be assigned to a variable (reference) of a child class through explicit type casting Not doing it will result in a compile error since the type assignment is not safe Compiler wants to make sure you know what you are doing Example Let's assume Student class is a child class of Person class Person person1 = new Student(); Student student1 = (Student) person1; // Explicit type casting 45

Runtime Type Mismatch Exception Even with explicit casting, you could still end up having a runtime error Example Let's assume Student class is a child class of Person class Let's assume Teacher class is also a child class of Person class Person person1 = new Student(); Person person2 = new Teacher(); Student student1 = (Student) person1; // Explicit type casting // No compile error, but runtime type mismatch exception Student student2 = (Student) person2; 46

Use instanceof Operator to Prevent Runtime Type Mismatch Error You can check the type of the object instance using instanceof before the type casting Example Person person1 = new Student(); Person person2 = new Teacher(); // Do the casting only when the type is verified if (person2 instanceof Student) { Student student2 = (Student) person2; } 47

Final Class & Final Method 48

Final Classes Final Classes Classes that cannot be extended To declare final classes, we write, public final ClassName{... } Example: public final class Person {... } Other examples of final classes are your wrapper classes and String class You cannot create a subclass of String class 49

Final Methods Final Methods Methods that cannot be overridden or hidden To declare final methods, we write, public final [returntype] [methodname]([parameters]){... } 50

Example: final Methods public final String getname(){ return name; } 51

Inheritance 52