Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

DOUBT on DOWNCASTING

 
debasmita pattnayak
Ranch Hand
Posts: 94
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,
i am really confused with the concept of downcasting.can anyone explain me in context to the following question:

class Vehicle {}
class Car extends Vehicle {}

class VarArgSeven {
public static void washVehicle(Vehicle ... v) {
for(Vehicle vv : v) {
Car c = (Car)vv;
System.out.print(c);
}
}
public static void main(String[] args) {
//insert the line here
}
}

Options :

a) washVehicle(new Car[] { new Car()});
b) washVehicle(new Vehicle[]{new Car(), new Vehicle()});
c) washVehicle(new Car(), new Car());
d) washVehicle(new Vehicle(), new Vehicle());
e) none of the above.

the answer to this is a and c but why not b and d too.
please explain.
thanks
 
Keith Lynn
Ranch Hand
Posts: 2409
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The reason is that even though Car extends Vehicle, if the runtime type of an object is Vehicle, you cannot refer to it as a Car.
 
debasmita pattnayak
Ranch Hand
Posts: 94
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi keith,
thanks for the reply...
i want to know then when is downcasting needed and what is the legal way of doing that? can you please sustain the same with an example
thanks in advance!
 
John Stone
Ranch Hand
Posts: 332
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
 
debasmita pattnayak
Ranch Hand
Posts: 94
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi,
thanks a lot!
now its more clear to me than before.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic