Sie sind auf Seite 1von 12

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());
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) {
System.out.println(x.toString()); 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) {
System.out.println(x.toString());
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) {
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

Das könnte Ihnen auch gefallen