public class Operations { private int number; public Operations(int num) { setTheNumber(num); } private void setTheNumber(int number) { this.number = number; } public int getNumber() { return number; } public Operations add(Operations op) { int num1, num2; num1 = this.getNumber(); // refers to the receiving objects data members num2 = op.getNumber(); // refers to the argument object Operations sum = new Operations(num1 + num2); return sum; } public Operations subtract(Operations op) { int num1, num2; num1 = this.getNumber(); num2 = op.getNumber(); Operations difference = new Operations(num1 - num2); return difference; } // when i add this method public String toString() { return getNumber() + "" ; } public Operations divide(Operations op) { int num1, num2; num1 = this.getNumber(); num2 = op.getNumber(); if (num1 == 0 || num2 == 0) { System.err.print("Cannot Divide By Zero"); System.exit(1); } Operations quotient = new Operations(num1 / num2); return quotient; } public Operations multiply(Operations op) { int num1, num2; num1 = this.getNumber(); num2 = op.getNumber(); Operations product = new Operations(num1 * num2); return product; } // Main public static void main(String[] args) { Operations num1, num2; Operations sum, diff, quot, prod; num1 = new Operations(10); num2 = new Operations(5); sum = num1.add(num2); diff = num1.subtract(num2); quot = num1.divide(num2); prod = num1.multiply(num2); System.out.println(sum); System.out.println(diff); System.out.println(quot); System.out.println(prod); } }
when im not yet Overriding the toString() method the output is
this:
xxTestxx.Operations@3e25a5 xxTestxx.Operations@19821f xxTestxx.Operations@addbf1 xxTestxx.Operations@42e816
but when i include the toString() method
the output became fine:
15 5 2 50
as you can see in my program, i didnt use the method toString().
but i dont really understand how does it affects the correct string representation,
i know a bit about memory address representation, so i know the first error,
thats the only thing i want to understand , why and how does the toString() method affects the output? when im not using it...
i know this program can be done in a primitive or rather natural way, but im currently reading a chapter about returning objects, this kind of object orientation suits for a fraction program( reducing fration) ,
i made an example like this so the concern can be noticeable (the fraction program is a bit confusing),
FOLLOW UP QUESTION:
question no 2:
the book says, when you return an object, you are actually returning a REFERENCE,
now my question is this.
take a look at this part
sum = num1.add(num2);
the object sum is receiving a reference from a returned object from the .add() method,
now what is the REFERENCE?
a). Is it the address?
b) Is it the value (15) - is the value 15 the reference?