File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes KAM India Edition Question 6.22 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 "KAM India Edition Question 6.22" Watch "KAM India Edition Question 6.22" New topic

KAM India Edition Question 6.22

Mahesh Bansal
Ranch Hand

Joined: Nov 28, 2000
Posts: 82
Given three classes A, B and C, where B is a subclass of A and C is a subclass of B, which one of these boolean expressions correctly identifies when an object o has actually been instantiated from class B as opposed to from A or C ?
Select the one right anshwer
a) (o instanceof B) && (!(o instanceof A))
b) (o instanceof B) && (!(o instanceof C))
c) !((o instanceof A) | | (o instanceof B))
d) (o instanceof B)
e) (o instanceof B) && !((o instanceof A) | | (o instanceof C))
I think that option b and d should be the right answer but the book says says option b only.
Please explain, thanks in advance
Sweekriti D

Joined: Jan 23, 2001
Posts: 10
even if u instantiate from c, (o instanceof b) returns true because c is a subclass of b.
therefore option b is correct as it should be an instanceof b only, not c. try compiling the code below & then changing line 11 to
b o = new b();
and see for yourself.
1. class a
2. {}
3. class b extends a
4. {}
5. class c extends b
6. {}
7. class testing
8. {
9. public static void main(String [] args)
10. {
11. b o = new c();
12. if(o instanceof b)
13. System.out.println("instance of b");
14. }
15. }
Sujit Kurtadikar
Ranch Hand

Joined: Dec 05, 2000
Posts: 68
You are right.
Option b and d are correct.
Zheng Huang
Ranch Hand

Joined: Dec 20, 2000
Posts: 49
d is incorrect. e is correct. Am I right?
I agree. Here's the link:
subject: KAM India Edition Question 6.22
It's not a secret anymore!