Chapter: Java The Complete Reference - The Java Language - A Closer Look at Methods and Classes

Study Material, Lecturing Notes, Assignment, Reference, Wiki description explanation, brief detail

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.

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.


Study Material, Lecturing Notes, Assignment, Reference, Wiki description explanation, brief detail


Copyright © 2018-2020 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.