polymorphism method overriding method overloading dynamic binding 1

Post on 02-Apr-2015

247 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Object Oriented Programming

Polymorphism•Method overriding•Method overloading•Dynamic binding

1

Introduction to polymorphismPolymorphism is the ability to take more

than one formEarlier on we discussed polymorphism

through operator overloading where an operator like “+” can be used for math addition, string concatenation, and for matrix addition.

This is equivalent to a word having different meanings depending on the context

2

Introduction to polymorphism – cont’d

Polymorphism enables objects with different internal structures to share the same external interface

This means same interface may be accessed by different classes that work differently as shown in figure below:

3

Fig: Polymorphism

4

<Shape>

Draw()

Circle

Draw()

Rectangle

Draw()

Triangle

Draw()

Introduction to polymorphism – cont’d

As we saw earlier, Java doesn’t implement operator overloading except the “+” operator

This lecture discusses how to implement polymorphism using method overriding and method overloading.

5

Method overridingOverriding means redefining a method of a

class in its subclassThe method name and signature (number and

type of parameters it requires) remain unchanged i.e. only the method body changes

6

Example: Overridingpublic class Super { int x; Super(int x) { this.x=x; } void display() { System.out.println("Super x = "+x); }}

7

Example: Overridingpublic class Sub extends Super { int y; Sub (int x, int y) { super(x); this.y = y; } void display() { System.out.println("Super x = "+ x); System.out.println("Sub y = "+ y); }}

8

Example: Overridingpublic class OverrrideTest { public static void main(String args[]) { Sub a = new Sub(100,200); a.display(); }}

9

Example: OverridingWe use this keyword to access a variable

of the current classWe use the inbuilt super method to access a

variable of the super classIn the above example, the Sub class

display() method overrides the Super class display() method

If we call the Sub class, we get a different behavior from that of the Super class

10

Example: Overriding in AppletsApplets always inherit from the Applet classThis class has methods such as init(), start(),

stop(), destroyThese methods are available for use by

applets to give them their runtime behavior

11

Example: Overriding in AppletsApplets are good examples of both the

inheritance and the polymorphism principles. To make an applet unique, various life cycle

methods are overridden as shown in example below

12

Example: Overriding in Appletsimport java.awt.*; import java.applet.*;

public class NestedApplet extends Applet { // display params int width=400; int height=200; int level=100; int inc=10; // first override the life cycle methods public void init() { System.out.println("Initializing"); incNesting(); }

13

Example: Overriding in Applets public void start() { System.out.println("Starting."); incNesting(); } public void stop() { System.out.println("Stopping."); incNesting(); } public void destroy() { System.out.println("Shutting down."); incNesting(); }

14

Example: Overriding in Appletspublic void paint(Graphics g) { int i, shift=0; g.setColor(Color.blue); for (i=0;i<level;i++) { g.drawRect(shift,shift,width-2*shift-1,height-2*shift-1);

shift = shift + inc; } g.drawString("Nesting level = "+level,width/2-50,height/2+5);

} public void incNesting() { level++; repaint(); }}

15

OverloadingOverloading is another technique to

implement polymorphismHere the method name is retained, but the

signature changesUsed when a method is required to perform

similar tasks but using different input parameters

16

Overloading – cont’d

When we call a method, Java matches the Method name, Number of parameters, andType of parameters

The matching method is then executed

17

Overloading – cont’d

Overloading does not require inheritanceAll we need to do is define several versions of

the same methodDefined methods should have different number

and type of parametersChange their body definition as appropriate

We can overload both constructors and ordinary methods

18

Overloading – cont’d

In the example below, the constructor method is overloaded such that one takes one integer parameter and the other takes two integer parameters

The matching will be done at runtime, depending on how many parameters you supply

19

Example: Overloadingclass Room { int length, breadth; Room(int x, int y) { length = x; breadth = y; } Room(int x) { length = breadth=x; } int area() { return(length*breadth); }}

20

Example: Overloadingclass RectangleSquare {

public static void main(String args[]) {Room room1 = new Room(25, 15);Room room2 = new Room(20);int area1 = room1.area();int area2 = room2.area();System.out.println("Area of Rectangle = "+area1);System.out.println("Area of Square = "+area2);

}

}

21

Overloading vs. OverridingDon't confuse the concepts of overloading and

overriding

Overloading deals with multiple methods in the same class with the same name but different signatures

Overriding deals with two methods, one in a parent class and one in a child class, that have the same signature

Overloading lets you define a similar operation in different ways for different data

Overriding lets you define a similar operation in different ways for different object types

22

Dynamic BindingBinding is the

Linking of a procedure call to the code to be executed in response to the call

Dynamic binding is theThe code to be executed is not known until the

time of the call at runtimeAssociated with polymorphism and inheritance.

23

Example: Dynamic Binding

24

Shape

Draw()

Circle Object

Draw(Circle)

Box Object

Draw(Box)

Rectangle Object

Draw(Rectangle)

Dynamic binding exampleBy inheritance,

Each of the object will invoke the draw procedure

The algorithm will however be known at runtime depending on whether the user wants to draw circle or box or rectangle

Thus, at runtime The code matching the object under current

reference will be called.

25

top related