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

Advanced Inheritance Concepts

This document discusses advanced inheritance concepts in Java including abstract classes and methods, dynamic method binding, arrays of subclass objects, the Object class and its methods, using inheritance for good software design, and design hints for inheritance. Abstract classes cannot be instantiated and must be extended. Dynamic method binding allows selecting the correct subclass method at runtime. Arrays can hold subclass objects referenced as the superclass type. The Object class is the implicit superclass and includes useful methods like toString(). Inheritance promotes code reuse and understanding between related classes.

Uploaded by

Vivek Verma
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Advanced Inheritance Concepts

This document discusses advanced inheritance concepts in Java including abstract classes and methods, dynamic method binding, arrays of subclass objects, the Object class and its methods, using inheritance for good software design, and design hints for inheritance. Abstract classes cannot be instantiated and must be extended. Dynamic method binding allows selecting the correct subclass method at runtime. Arrays can hold subclass objects referenced as the superclass type. The Object class is the implicit superclass and includes useful methods like toString(). Inheritance promotes code reuse and understanding between related classes.

Uploaded by

Vivek Verma
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 13

Advanced Inheritance Concepts

In this chapter, we will cover:

• Creating and using abstract classes


• Using dynamic method binding
• Creating arrays of subclass objects
• Using the Object class and its methods
• Using inheritance to achieve good software
design.
Creating and Using Abstract Classes

• Abstract class
– A class from which you cannot create any concrete
objects, but from which you can inherit
– You can only extend abstract classes
– Use the keyword abstract
– You cannot use the keyword new
Creating and Using Abstract Classes

• Non-abstract classes from which objects can be


instantiated are called concrete classes

• In other programming languages, such as C++, abstract


classes are known as virtual classes
Abstract Methods

• Abstract method
– A method with no method statements
• To create an abstract method, you provide
– the keyword abstract
– the intended method type, name, and arguments
– but you do not provide any statements within the
method
• You must code a subclass method to override any inherited
abstract superclass method
Using Dynamic Method Binding
• When you create a superclass and one or more subclasses, each
object of the subclass “is a” superclass object
– Because every subclass “is a” superclass member, you can convert subclass
objects to superclass objects

• You can create a reference to a superclass


– But you do not use the keyword new
– You create a variable name to hold the memory address of a subclass concrete
object

• Dynamic method binding


– The program’s ability to select the correct subclass method
– Is also called late binding
Creating Arrays of Subclass Objects

• You might want to create a superclass reference and treat


subclass objects as superclass objects so you can create an
array of different objects that share the same ancestry

– Manipulate an array of subclass objects by invoking the


appropriate method for each subclass
– Elements in a single array must be of the same type
– You can then cast the objects in the array back to
appropriate subclass.
• e.g if (shapes[count] instanceof Wheel)
((Wheel) shapes[count]).setSpokes(5);
Using the Object Class and Its Methods
• Every class in Java is a subclass except for the Object class
– The Object class is defined in the java.lang packag
• java.lang is automatically imported every time you write a program

– The Object class includes methods that you can override


• toString Method
– If you do not create a toString() method for a class, then you can use the superclass
version of the toString() method
– Can be useful for debugging
• equals() method
– Takes a single argument, which must be the same type as the type of the invoking method
– Returns a Boolean value
Using Inheritance to Achieve Good
Software Design
• Extended superclass advantages
– Subclass creators save development time
– Subclass creators save testing time
– Programmers who create or use new subclasses already understand how the
superclass woks, so the time it takes to learn the new class features is
reduced
– When you create a new subclass in Java, neither the superclass source code
nor the superclass bytecode is changed; the superclass maintains its integrity

• When you create a number of classes that inherit from each other,
you will often find it convenient to place these classes in a package
Design Hints for Inheritance
• Place common operations and fields in the superclass
• Don’t overuse protected fields.
– Malcious subclasses can access these fields.
• Use inheritance to model the “is-a” relationship.
• Don’t use inheritance unless all nherited methods make sense.
• Use polymorphism, not type information.
– if (x is of type 1)
action
else if (x is of type 2) …
think polymorphism.
• Don’t overuse reflection.
– reflection is used for tools, not applications.

You might also like