Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose...

24
Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a. base class) subclass (a.k.a. derived class, extended class) Inheritance models the is-a relationship. If class E is an extended class of class B, then any object of E can act-as an object of B.

Transcript of Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose...

Page 1: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Inheritance

Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a. base class) subclass (a.k.a. derived class, extended class)

Inheritance models the is-a relationship. If class E is an extended class of class B, then any object of E can act-as an object of B.

Page 2: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Book.javaclass Book { protected int pages = 1500;

public void pageMessage() { System.out.println("Number of pages: " + pages); }}

Page 3: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Dictionary.javaclass Dictionary extends Book { private int definitions = 52500;

public void definitionMessage() { System.out.println("Number of definitions: " + definitions); System.out.println("Definitions per page: " + definitions/pages); }}

Page 4: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Words.javaclass Words { public static void main (String[] args) { Dictionary webster = new Dictionary(); webster.pageMessage(); webster.definitionMessage(); }}

Output:C:\Examples>java WordsNumber of pages: 1500Number of definitions: 52500Definitions per page: 35

Page 5: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Extending Classes

Protected visibilitySuper constructorOverridingSuper referenceSingle vs. multiple inheritance A class may have only one superclass

Page 6: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Book2.javaclass Book2 { protected int pages;

public Book2(int pages) { this.pages = pages; }

public void pageMessage() { System.out.println("Number of pages: " + pages); }}

Page 7: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Dictionary2.javaclass Dictionary2 extends Book2 { private int definitions;

public Dictionary2(int pages, int definitions) { super (pages); this.definitions = definitions; }

public void definitionMessage () { System.out.println("Number of definitions: " + definitions); System.out.println("Definitions per page: " + definitions/pages); }}

Page 8: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Words2.javaclass Words2 { public static void main (String[] args) { Dictionary2 webster = new Dictionary2(1500, 52500); webster.pageMessage(); webster.definitionMessage(); }}

Output:C:\Examples>java Words2Number of pages: 1500Number of definitions: 52500Definitions per page: 35

Page 9: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Book3.javaclass Book3 { protected String title; protected int pages;

public Book3(String title, int pages) { this.title = title; this.pages = pages; }

public void info() { System.out.println("Title: " + title); System.out.println("Number of pages: " + pages); }}

Page 10: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Dictionary3a.javaclass Dictionary3a extends Book3 { private int definitions;

public Dictionary3a(String title, int pages, int definitions) { super (title, pages); this.definitions = definitions; }

public void info() { System.out.println("Dictionary: " + title); System.out.println("Number of definitions: " + definitions); System.out.println("Definitions per page: " + definitions/pages); }}

Page 11: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Dictionary3b.javaclass Dictionary3b extends Book3 { private int definitions;

public Dictionary3b(String title, int pages, int definitions) { super (title, pages); this.definitions = definitions; }

public void info() { super.info(); System.out.println("Number of definitions: " + definitions); System.out.println("Definitions per page: " + definitions/pages); }}

Page 12: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Books.javaclass Books { public static void main (String[] args) { Book3 java = new Book3("Introduction to Java", 350); java.info(); System.out.println(); Dictionary3a webster1 = new Dictionary3a("Webster English Dictionary",

1500, 52500); webster1.info(); System.out.println(); Dictionary3b webster2 = new Dictionary3b("Webster English Dictionary",

1500, 52500); webster2.info(); }}

Page 13: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Books.javaOutput:

C:\Examples>java BooksTitle: Introduction to JavaNumber of pages: 350

Dictionary: Webster English DictionaryNumber of definitions: 52500Definitions per page: 35

Title: Webster English DictionaryNumber of pages: 1500Number of definitions: 52500Definitions per page: 35

Page 14: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Overloading vs. Overriding

Overloading More than one methods have the same

name but different signatures

Overriding Replacing the implementation of a methods

in the superclass with one of your own. You can only override a method with the

same signature. You can only override instance methods.

Page 15: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

The Object Class

The root of Java class hierarchy Defines some common methods: public String toString() public boolean equals(Object other)

If a class does not explicitly declare a superclass, its superclass is Object.

Page 16: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Abstract Class

An abstract class is a class with partial implementation. It implements behaviors that are common to all subclasses, but defers to the subclasses to implement others (abstract methods). An abstract class cannot be instantiatedThe subclass of an abstract class must override the abstract methods of the parent, or it too will be considered abstract

Page 17: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Interface

Interfaces are classes with no implementation. Interfaces represent pure design. Abstract classes represent mixed design and

implementation.

An interface consists of only abstract methods and constants, i.e., static and final. All methods and constants are public. No static methods. An interface cannot be instantiated

Page 18: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Inheritance on Interface

Inheritance relation also applies to interfaces superinterface and subinterface

Effects of Multiple inheritance effected by An interface may extend multiple

interfaces A class my implement multiple

interfaces

Page 19: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Type ConversionImplicit Conversion

Numeric variables: Any numeric types can be converted to another numeric type with larger range, e.g.

char ==> int, int ==> long, int ==> float, float ==> double.

Object reference: An object reference of class C can be converted to a reference of a superclass of C.

Page 20: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Type ConversionExplicit Conversion (Cast)

Numeric variables: Any numeric types can be explicitly cast to any other numeric type. May lose bits, precision.Object reference: Cast an object reference of a class to a reference of any other class is: syntactically allowed; but runtime checked.

Page 21: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Cast Object Referencesclass Student { ... }class Undergraduate extends Student { ... }class Graduate extends Student { ... }

Student student1, student2;student1 = new Undergraduate(); // okstudent2 = new Graduate(); // ok

Graduate student3;student3 = student2; // compilation error

student3 = (Graduate) student2; // explicit cast, ok

student3 = (Graduate) student1; // compilation ok, run-time error

Page 22: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Polymorphic Reference

A polymorphic reference is one which can refer to different types of objects.

Page 23: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Books2.javaclass Books2 { public static void main (String[] args) { Book3[] books = { new Book3("Introduction to Java", 350), new Dictionary3a("Webster English Dictionary",

1500, 52500), new Dictionary3b("Webster English Dictionary",

1500, 52500)}; for (int i = 0; i < books.length; i++) { Book3 book = books[i]; book.info(); System.out.println(); } }}

Page 24: Inheritance Inheritance allows the derivation of a new class from an existing one, for the purpose of reuse, enhancement, adaptation, etc. superclass (a.k.a.

Example: Books2.java

Output:

C:\Examples>java Books2Title: Introduction to JavaNumber of pages: 350

Dictionary: Webster English DictionaryNumber of definitions: 52500Definitions per page: 35

Title: Webster English DictionaryNumber of pages: 1500Number of definitions: 52500Definitions per page: 35