aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes From the office. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "From the office." Watch "From the office." New topic
Author

From the office.

Jean-Francois Alban
Greenhorn

Joined: Apr 13, 2011
Posts: 5
Hi guys

Here's a code we were playing with at the office.
What do you think is the expected outcome (no cheating don't run).
Also please provide a why to your answer. Thanks guys!!

Helen Ma
Ranch Hand

Joined: Nov 01, 2011
Posts: 451

public class Toto {

public static void main(String[] args) {
Toto toto = new Toto();
System.out.print(toto.toString(toto.getMyObj()));
}

MyObj getMyObj(){
return new MySubObj();
}

String toString(MyObj swap){
return "MyObj";
}

String toString(MySubObj swap){
return "MySubObj";
}
}

class MyObj{

}

class MySubObj extends MyObj{

}
public class Toto {

public static void main(String[] args) {
Toto toto = new Toto();
System.out.print(toto.toString(toto.getMyObj()));
}

MyObj getMyObj(){
return new MySubObj();
}

String toString(MyObj swap){
return "MyObj";
}

String toString(MySubObj swap){
return "MySubObj";
}
}

class MyObj{

}

class MySubObj extends MyObj{

}



I think the answer is MyObj.
From the code , the toString method seems overloaded correctly.
Step 1. toto.getMyObj() returns a MyObj object which is actually a MySubObj.
Step 2. What is passed in as the argument of toto.toString()? an object of MyObj type
Step 3. So, the toString(MyObj swap) is called instead of toString(MySubObj)
Step 4 Therefore, it prints MyObj.
Correct me if I am wrong.
Jean-Francois Alban
Greenhorn

Joined: Apr 13, 2011
Posts: 5
That's correct.
Naturally I would have assume that at runtime the JMV would sort it out and use MySubObj.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: From the office.