aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Cast expression 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 "Cast expression" Watch "Cast expression" New topic
Author

Cast expression

Albertina Gonzalez
Greenhorn

Joined: Apr 23, 2002
Posts: 11
Can someone explain me with other words the casting, when reference variable and type of class? (Valentin's Mock exam)

Question 7. Select two correct statements about the code given below?
class A{}
class B extends A implements E{}//line 1
class C extends A{}
class D extends B{}
interface E{}
public class Question07 {
public static void main(String[] args) {
A a = new D();//line 2
C c = new C();//line 3
E e = (E)a;//line 4
B b = (B)e;//line 5
}
}


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.
Manfred Leonhardt
Ranch Hand

Joined: Jan 09, 2001
Posts: 1492
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.
Reid M. Pinchback
Ranch Hand

Joined: Jan 25, 2002
Posts: 775
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
Thank you
Thanks, Now I know the begin.
It has been helpful to see the detachhed subjects
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Cast expression