<< Chapter < Page Chapter >> Page >

Two overloaded methods

The program defines two overloaded methods named overLoadMthd . One requires an incoming parameter of type Test , and the other requires an incoming parameter of type DumIntfc . When called, each of the overloaded methods prints a message indicating the type of itsargument.

Two objects of the class Test

The program instantiates two objects of the class Test . It assigns one of the object's references to a reference variable named a , which is declared to be of type Test .

The program assigns the other object's reference to a reference variable named b , which is declared to be of type DumIntfc . (Remember, both objects were instantiated from the class Test .)

No surprises here

Then it calls the overloaded method named overLoadMthd twice in succession, passing first the reference variable of type Test and then the reference variable of type DumIntfc .

The program output doesn't produce any surprises. When the reference variable of type Test is passed as a parameter, the overloaded method requiring that type of parameter is selected for execution. When the referencevariable of type DumIntfc is passed as a parameter, the overloaded method requiring that type of parameter is selected for execution.

Back to Question 6

Answer 5

C. float 2.14748365E9 float 9.223372E18double 4.2

Explanation 5

Another subtle method selection issue

This program illustrates a subtle issue in the automatic selection of an overloaded method based on assignment compatibility.

This program defines two overloaded methods named square . One requires an incoming parameter of type float , and the other requires an incoming parameter of type double .

When called, each of these methods prints the type of its formal argument along with the value of the incoming parameter as represented by its formalargument type. In other words, the value of the incoming parameter is printed after it has been automatically converted to the formal argument type.

Printout identifies the selected method

This printout makes it possible to determine which version is called for different types of parameters. It also makes it possible to determine the effectof the automatic conversion on the incoming parameter. What we are going to see is that the conversion process can introduce serious accuracy problems.

Call the method three times

The square method is called three times in succession, passing values of type int , long , and double during successive calls.

(Type long is a 64-bit integer type capable of storing integer values that are much larger than can be stored intype int . The use of this type here is important for illustration of data corruption that occurs through automatic typeconversion.)

The third invocation of the square method, passing a double as a parameter, is not particularly interesting. There is a version of square with a matching argument type, and everything behaves as would be expected for this invocation. The interesting behavioroccurs when the int and long values are passed as parameters.

Passing an int parameter

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask