Using
Objects as Parameters
So far, we have only been
using simple types as parameters to methods. However, it is both correct and
common to pass objects to methods. For example, consider the following short
program:
// Objects may be passed to methods.
class Test {
int a, b;
Test(int i, int j) { a = i;
b = j;
}
// return true if o is equal to the invoking object
boolean equalTo(Test o) {
if(o.a == a && o.b ==
b) return true; else return false;
}
}
class PassOb {
public static void
main(String args[]) { Test ob1 = new Test(100, 22);
Test ob2 = new Test(100, 22);
Test ob3 = new Test(-1, -1);
System.out.println("ob1
== ob2: " + ob1.equalTo(ob2)); System.out.println("ob1 == ob3: "
+ ob1.equalTo(ob3));
}
}
This program generates the
following output:
ob1 == ob2: true
ob1 == ob3: false
As you
can see, the equalTo( ) method
inside Test compares two objects for
equality and returns the result. That is, it compares the invoking object with
the one that it is passed. If they contain the same values, then the method
returns true. Otherwise, it returns false. Notice that the parameter o in equalTo( ) specifies Test as
its type. Although Test is a class type created by the program, it
is used in just the same way as Java’s built-in types.
One of the most common uses
of object parameters involves constructors. Frequently, you will want to construct
a new object so that it is initially the same as some existing object. To do
this, you must define a constructor that takes an object of its class as a
parameter. For example, the following version of Box allows one object to initialize another:
// Here, Box allows one object to initialize
another.
class Box { double width; double height; double
depth;
//Notice this constructor. It takes an object of type
Box. Box(Box ob) { // pass object to constructor
width = ob.width; height =
ob.height; depth = ob.depth;
}
// constructor used when all dimensions specified
Box(double w, double h, double d) {
width = w; height = h; depth
= d;
}
constructor used when no dimensions specified
Box() {
width = -1; //
use -1 to indicate
height = -1; // an uninitialized
depth = -1; // box
}
constructor used when cube is created
Box(double len) {
width = height = depth = len;
}
compute and return volume
double volume() {
return width * height * depth;
}
}
class OverloadCons2 {
public static void main(String args[]) {
// create boxes using the various constructors
Box mybox1 = new Box(10, 20, 15);
Box mybox2 = new Box();
Box mycube = new Box(7);
Box myclone = new Box(mybox1); // create copy
of mybox1
double vol;
get volume of first box vol = mybox1.volume();
System.out.println("Volume of mybox1 is
" + vol);
get volume of second box
vol = mybox2.volume();
System.out.println("Volume of mybox2 is " + vol);
// get volume of cube
vol =
mycube.volume();
System.out.println("Volume of cube is
" + vol);
// get volume of clone
vol =
myclone.volume();
System.out.println("Volume of clone is
" + vol);
}
}
As you
will see when you begin to create your own classes, providing many forms of
constructors is usually required to allow objects to be constructed in a convenient
and efficient manner.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.