0% found this document useful (0 votes)
80 views12 pages

© LPU:: CSE310 Programming in Java:: Sawal Tandon

The lecture discusses method overloading, polymorphism, dynamic binding, generic programming, and casting objects in Java. It defines key concepts like subtypes and supertypes, and how polymorphism allows methods to be used generically for different object types through dynamic binding at runtime.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views12 pages

© LPU:: CSE310 Programming in Java:: Sawal Tandon

The lecture discusses method overloading, polymorphism, dynamic binding, generic programming, and casting objects in Java. It defines key concepts like subtypes and supertypes, and how polymorphism allows methods to be used generically for different object types through dynamic binding at runtime.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Lecture 6

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Outcome of the Lecture

Upon completion of this lecture you will be able to

 Overload the methods

 Understand the concept of polymorphism

 Know the concept of Dynamic Binding and Generic


Programming

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Outline of the Presentation

 Method Overloading

 Subtype and Supertype

 Polymorphism and Dynamic Binding

 Generic Programming

 Casting Objects and instanceof operator

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Method Overloading

 Defining multiple methods with the same name but different signatures
within same class

 Java compiler determines which method is used based on the method


signature

 Overloaded methods must have different parameter lists. You cannot


overload methods based on different modifiers or return types

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Method Overloading
public class TestMethodOverloading {
public static void main(String[] args) {
[Link]("The maximum between 3 and 4 is "+
[Link]("The maximum between 3.0 and 5.4 is "+
[Link]("The maximum between 3.0, 5.4, and 10.14 is "+
}
public static
if (num1 > num2)
return num1;
else
return num2;
}
public static
if (num1 > num2)
return num1;
else
return num2;
}
public static {
return max(max(num1, num2), num3);
}
}
Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon
Method Overloading

 Sometimes there are two or more possible matches for an invocation of a method,
but the compiler cannot determine the most specific match. This is referred to as
.

public class AmbiguousOverloading {


public static void main(String[] args) {
[Link](max(1, 2));
}
public static double max(int num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}
public static double max(double num1, int num2) {
if (num1 > num2)
return num1;
else
return num2;
}
}

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Subtype and Supertype

 A class defines a .
 A type defined by a subclass is called a and a type defined by its
superclass is called a
 Circle is a subtype of GeometricObject and GeometricObject is a supertype
for Circle.
 inheritance relationship enables a subclass to inherit features from its
superclass with additional new features
 subclass is a specialization of its superclass; every instance of a subclass is
also an instance of its superclass,
 every circle is a geometric object, but not every geometric object is a circle

 An object of a subtype can be used wherever its supertype value is required.


This feature is known as .
Polymorphism and Dynamic Binding
public class PolymorphismDemo {
public static void main(String[] args) {
m(new GraduateStudent());
m(new Student());
Method m takes a parameter of the Object
m(new Person());
m(new Object()); type. You can invoke it with any object.
}
An object of a subtype can be used wherever
public static void m(Object x) {
[Link]([Link]()); its supertype value is required. This feature is
} known as polymorphism.
}
class GraduateStudent extends Student {
} When the method m(Object x) is executed, the argument
class Student extends Person {
public String toString() { x’s toString method is invoked. x may be an instance of
return "Student"; GraduateStudent, Student, Person, or Object. Classes
} GraduateStudent, Student, Person, and Object have their
}
class Person extends Object { own implementation of the toString method.
public String toString() {
return "Person"; This capability is
}
} known as

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Generic Programming
public class PolymorphismDemo {
public static void main(String[] args) {
m(new GraduateStudent());
m(new Student());
m(new Person());

}
m(new Object()); Polymorphism allows methods to be
public static void m(Object x) {
[Link]([Link]());
used generically for a wide range of
}
} object arguments. This is known as
class GraduateStudent extends Student {
}
Generic Programming.
class Student extends Person {
public String toString() {
return "Student";
}
}
class Person extends Object {
public String toString() {
return "Person";
}
}

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Casting Objects and instanceof operator

 Casting can be used to convert an object of one class type to


another within an inheritance hierarchy.
 Casting from subclass to super class is

Object o = new Student();

 Casting from super class to sub class needs to be

Student b = (Student)o

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon


Casting Objects and instanceof operator

 If the superclass object is not an instance of the subclass, a runtime


ClassCastException occurs

operator is used to test whether an object is an instance of a class

Object myObject = new Circle();


if (myObject instanceof Circle) {
[Link]("The circle diameter Circle)myObject).getDiameter());
...
}

 To enable generic programming, it is a good practice to define a variable


with a supertype, which can accept a value of any subtype
Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon
Casting Objects and instanceof operator

 Object member access operator (.) precedes the casting operator.

 Parentheses should be used to ensure that casting is done before the .


operator, as in
((Circle)object).getArea());

Lecture 6 © LPU :: CSE310 Programming in Java :: Sawal Tandon

You might also like