Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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) {
System.out.println("The maximum between 3 and 4 is "+
System.out.println("The maximum between 3.0 and 5.4 is "+
System.out.println("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) {
System.out.println(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());
type. You can invoke it with any object.
m(new Object());
}
An object of a subtype can be used wherever
public static void m(Object x) {
its supertype value is required. This feature is
System.out.println(x.toString());
known as polymorphism.
}
}
class GraduateStudent extends Student {
}
When the method m(Object x) is executed, the argument
class Student extends Person {
x’s toString method is invoked. x may be an instance of
public String toString() {
GraduateStudent, Student, Person, or Object. Classes
return "Student";
}
GraduateStudent, Student, Person, and Object have their
}
own implementation of the toString method.
class Person extends Object {
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());
}
public static void m(Object x) {
System.out.println(x.toString());
}
}
class GraduateStudent extends Student {
}
class Student extends Person {
public String toString() {
return "Student";
}
}
class Person extends Object {
public String toString() {
return "Person";
}
}
Lecture 6
Polymorphism allows methods to be
used generically for a wide range of
object arguments. This is known as
Generic Programming.
© 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) {
System.out.println("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