Top Banner
Inheritance
46

Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Jan 17, 2016

Download

Documents

Osborne Berry
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Inheritance

Page 2: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Inheritance - Introduction

• Idea behind is to create new classes that are built on existing classes– you reuse the methods and fields and– you add new methods and fields to adapt your new class

to new situations.• Inheritance is a mechanism through which a class can

be defined in terms of an existing class.• It supports the concept of hierarchical classification• Employee class :- manager is an employee – “is-a”

r/ship is the hallmark of inheritance.

Page 3: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Superclass & subclass

Superclass

Subclass

Animal

Dog

Page 4: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

An Example

Page 5: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

• In terminology of Java, a class that is inherited is called a superclass.

• The class that does the inheriting is called a subclass

Superclass & subclass

Page 6: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

An Example

• To define a subclass from a superclass – use extends keyword in Java.

E.g class Manager extends Employee{

Added methods and fields}

Page 7: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Types of inheritance

• Single Inheritance

• Multiple Inheritance

• Multilevel Inheritance

• Hybrid Inheritance

Page 8: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Inheritance – So far

• A fundamental mechanisms for code reuse in OOP- inheritance.

• It allows new classes to be derived from an existing class.

• The new class (subclass, subtype, derived class, child class) can inherit members from the old class (superclass, supertype, base class, parent class).

• The subclass can add new behavior and properties, and under certain circumstances, modify its inherited behavior.

Page 9: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Inheritance

• The keyword extends indicates that you are making a new class that derives from an existing class.

• Subclasses have more functionalities than their superclasses.• Add new methods to subclasses.

class Manager extends Employee{

private double bonus; //added feature to Manager class

public void setBonus(double b){bonus = b;}

}

Page 10: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Member access

• Inheritance of members is closely tied to their declared accessibility.

• Private members of the superclass are not inherited by the subclass and can only be indirectly accessed.

• but they exist in the subclass object.• the subclass can use the inherited members as

if they were declared in its own class body.

Page 11: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Accessibility of data members

• A subclass in includes all of the members of its superclass, it cant access those members of the superclass that have been declared as private.

• All inheritance in Java is public inheritance.• All the public members and protected

members are inherited as public and protected respectively.

Page 12: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

A Scenarioclass A{

int a; int getA()

{return a;

}void setA(int v){

a=v;}

}

class B extends A{

int b; int getB()

{return b;

}void setB(int v){

b=v;}

}

Page 13: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

A Scenario• A objA=new A();• B objB= new B();

agetA()setA(int v)

abgetA()setA(int v)getB()setB(int v)

Page 14: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Inheritance in Java

• A class in Java can only extend one other class; that is, it can only have one immediate superclass.

Page 15: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Method overriding

• When designing classes, you place the most general methods into the superclass, and more specialized methods in the subclass.

• The getSalary method should return the sum of the base salary and the bonus.

Page 16: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Method overriding

• You need to supply a new method to override the superclass method

• A subclass can add fields, and it can add or override methods of the superclass.

• However, inheritance can never take away any fields or methods

Page 17: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

• The getSalary method of the Manager class has no direct access to the private fields of the superclass

public double getSalary(){return salary + bonus; // won't work}

• We need to indicate that we want to call the getSalary method of the Employee superclass, not the current class.

• You use the special keyword super for this purpose: The call super.getSalary() calls the getSalary method of the Employee class.

Method overriding

Page 18: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

• Here is the correct version of the getSalary method for the Manager class:

public double getSalary(){double baseSalary = super.getSalary();return baseSalary + bonus;}

Method overriding

Page 19: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

The super keyword• super is a special keyword that directs the

compiler to invoke the superclass method.

Page 20: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Constructor call

Constructors are called in order of derivation, from superclass to subclass

Page 21: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Super

• super has two general forms:-– the first calls the superclass’ constructor– the second is used to access a member of the superclass

that has been hidden by a member of a subclass.

• The instruction super(n, s, year, month, day); is shorthand for “call the constructor of the Employee superclass with n, s, year, month, and day as parameters.”

Page 22: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

super

• Since the Manager constructor cannot access the private fields of the Employee class, it must initialize them through a constructor.

• The constructor is invoked with the special super syntax.

• The call using super must be the first statement in the constructor for the subclass.

• the super keyword has two meanings: – to invoke a superclass method, and – to invoke a superclass constructor.

Page 23: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Preventing Inheritance

• Final Classes & Methods• Classes that cannot be extended are called

final classes, and you use the final modifier in the definition of the class to indicate this.

• You can also make a specific method in a class final. If you do this, then no subclass can override that method.

Page 24: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

final keyword

• Using final with inheritance–final has three uses:-• it can be used to create the equivalent of a

named constant• Using final to prevent overriding• Using final to prevent inheritance

Page 25: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Abstract classes

• A superclass that declares the structure of a given abstraction without providing a complete implementation of every method.

• A superclass that only defines a generalized form that will be shared by all its subclasses, leaving it to each subclass to fill in the details. Such a class determines the nature of the methods that the subclasses must implement.

• Shape– area() ; Triangle – its own implementation of area(), square, circle…

Page 26: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Abstract classes

• To require that certain methods be overridden by the subclasses – use abstract type modifier

• Subclass’ responsibility – as no implementation in superclass.

• Any class that contains one or more abstract method must also be declared as abstract.

• You cannot declare abstract constructors or abstract static method.

• Although abstract classes cannot be used to instantiate objects, they can be used to create object references

Page 27: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Abstract Classes

• Abstract classes can have concrete data and methods.

• Abstract classes cannot be instantiated. That is, if a class is declared as abstract, no objects of that class can be created.

• Note that you can still create object variables of an abstract class, but such a variable must refer to an object of a non-abstract subclass and subclass of the latter.

Page 28: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Runtime Polymorphism – Dynamic method dispatch

• Method overriding forms the basis :- Dynamic method dispatch.

It’s a mechanism by which a call to an overridden method is resolved at run-time, rather than compile time.

Page 29: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Runtime Polymorphism – Dynamic method dispatch

Its important because this is how Java implements run-time polymorphism.

• When an overridden method is called through a superclass reference, Java determines which version of that method to execute based on the type of the object being referred to at the time the call occurs. Thus, this determination is made at run time

• Dynamic method lookup is the process of determining which method definition a method signature denotes during runtime, based on the type of the object.

Page 30: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Object: The Cosmic Superclass

• The Object class is the ultimate ancestor—every class in Java extends Object.

• The ultimate superclass Object is taken for granted if no superclass is explicitly mentioned.

• Because every class in Java extends Object, it is important to be familiar with the services provided by the Object class.

• In Java, only the primitive types (numbers, characters and boolean values) are not objects. All array types are class types that extend the Object class.

Page 31: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

The equals and toString methods

• The equals method in the Object class tests whether or not one object is equal to another.

• If you want to test objects for equality, you will need to override equals for a more meaningful comparison.

• Similarly need to override toString() method.• Another important method in Object is the toString

method that returns a string that represents the value of this object. Almost any class will override this method to give you a printed representation of the object's current state.

Page 32: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

finalize()

• protected void finalize() • Called by the garbage collector on an object

when garbage collection determines that there are no more references to the object. A subclass overrides the finalize method to dispose of system resources or to perform other cleanup.

Page 33: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

• Why no multiple inheritance in Java?• instanceof keyword.• Explore the Object class

Page 34: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Interfaces• Using the keyword interface, you can fully abstract a class'

interface from its implementation.

• Using interface you specify what a class must do, but not

how it does.

• Syntactically similar to classes, but lack instance variables and

methods are abstract and public.

• To implement an interface, a class must create the complete

set of methods defined by the interface

Page 35: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Defining an interface<access> interface name

{

.....

}

Page 36: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Defining an interface• default or public access specifier.

• public - it shud be the only public i/f - same file name

• Each class that includes an interface must implement all of

the methods

• Variables can be declared inside interface declarations - but

implicitly are final and static - they cannot be changed by

the implementing class - they must also be initialized.

• All methods are implicity public.

Page 37: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Implementing an interface.

• One or more classes can implement an interface.class C implements i/fname,...

{}

• The methods that implement an interface must be declared public.

• To make a class implement an interface, two steps:-– You declare that your class intends to implement the given

interface– You supply the definitions for all the methods in the interface.

• Interfaces can be extended - using the extends keyword

Page 38: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

More on interfaces

• Interface are not classes.

• You can never use new operator to instantiate an

interface - cant construct interface objects, you can

still declare interface variables.

• An interface variable must refer to an object of a class

that implements the interface.

• Why interfaces why not abstract classes?

Page 39: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Packages

Page 40: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Packages• A package in Java is an encapsulation mechanism that can be

used to group related classes, interfaces, and subpackages.

• A package hierarchy represents an organization of the Java

classes and interfaces.

• It does not represent the source code organization of the

classes and interfaces.

Page 41: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Packages• Each Java source file (also called compilation unit) can contain zero or

more definitions of classes and interfaces, but the compiler produces a

separate class file containing the Java byte code for each of them.

• A class or interface can indicate that its Java byte code be placed in a

particular package, using a package declaration.

• The package statement has the following syntax:

package <fully qualified package name>;

• A class can use all classes from its own package and all public classes from

other packages.

Page 42: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Two schemes

• First, all the classes and interfaces in a source

file will be placed in the same package.

• Secondly, several source files can be used to

specify the contents of a package.

Page 43: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Defining a package• Simply include a package command as the first statement in a

Java source file.

• The package statement defines a namespace in which classes are stored.

• If not mentioned – class names are put to default package.

• E.g:- package MyPackage (creates a package called MyPackage)

• Java uses file system directories to store packages.

• The package statement simply specifies to which package the classes defined belong to.

• A package hierarchy must reflect to the file system of Java development system.

Page 44: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

CLASSPATH

• Packages are mirrored by directories

• How does Java run-time system know where to look

for packages that you create?

• First the JRE – uses the current working directory.

• Then in the paths set in the CLASSPATH environment

variable

• Or in the –classpath option in the javac tool.

Page 45: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

CLASSPATH

• CLASSPATH Variables:-

– Java compiler and interpreter searches the .class

files in the path specified in the CLASSPATH

variable.

– The current working directory is by default

included in this variable.

Page 46: Inheritance. Inheritance - Introduction Idea behind is to create new classes that are built on existing classes – you reuse the methods and fields and.

Access Protection