A. The code compiles without error and runs fine. B. Compilation error on line 1 because interface E is not yet declared (forward-referencing). C. Compilation error on line 4 because class A does not implement interface E. D. The cast on line 4 is mandatory. E. The cast on line 5 is not mandatory. First, pay attention to the class hierarchy (B and C are sibling classes!!) Then, there is no such thing as forward-referencing issues when using interfaces declared later in the compilation unit. On line 4, we are dealing with an object whose runtime type is D which implements interface E. The cast is mandatory, though, since the reference type (A) is not assignment compatible with the reference type E. The cast on line 5 is mandatory for the same reasons.

Hi Albertina, You are correct and your explanation is good. The two correct answers are: A. The code compiles without error and runs fine. and D. The cast on line 4 is mandatory. As you have explained in your own words ... What is the problem? Regards, Manfred.

Originally posted by Albertina Gonzalez: Can someone explain me with other words the casting, when reference variable and type of class? (Valentin's Mock exam)

This is one of those things where I think it helps to distill the issues down to a set of rules that you can memorize and apply at will. Not my original idea; I got the idea from the Roberts et al cert book. I simply didn't like their rules and came up with my own. To answer this question you need to know: a) rules for assignment conversion of references b) compile-time rules for reference casting c) runtime rules for runtime casting Get those 3 sets of rules down pat and you've probably got 5% or more of the exam in the bag.

Reid - SCJP2 (April 2002)

Albertina Gonzalez
Greenhorn

Joined: Apr 23, 2002
Posts: 11

posted May 02, 2002 18:55:00

0

Thank you Thanks, Now I know the begin. It has been helpful to see the detachhed subjects