Forums Register Login

casting

+Pie Number of slices to send: Send
Could anyone explain why the below code results in an error:
File: junktest.java
class junktest {
public static void main(String args []) {
junk j1 = new junk();
junksub js;
System.out.print("inside junktest");
js = (junksub)j1;
}
}
File: junk.java
class junk {
public static void main(String args []) {
System.out.println("This is junk");
}
}
File: junksub.java
class junksub extends junk {
public static void main(String args []) {
System.out.println("This is junksub");
}
}
Thank you in advance!
+Pie Number of slices to send: Send
For starters, main is not a method that you put into all classes you create. I would remove it from class junk and junksub altogether.
Then, you can't make class junk a junksub. All instances of junksub are junk, but not all instances of junk are junksub. Does that make sense?
+Pie Number of slices to send: Send
That's right, you can upcast no problem, but not downcast (class-wise). Also, I beleive that whatever class you decide to keep your one main() method in has to be declared as public.
Someone correct me if I am wrong.
------------------
  • Ryan Burgdorfer
  • Java Acolyte in
  • Columbus, OH USA
+Pie Number of slices to send: Send
They can't be protected or private, but they don't need to be explicitly public either.

This works, so the default (or package) access is allowed as well as public.
+Pie Number of slices to send: Send
I still do not understand why am I getting an error when I do an explicit cast down.
Eventhough I have the main declared in each class it is not causing the casting error.
Thank you,
+Pie Number of slices to send: Send
Charlie:
You cannot force an object of junk()to be an object of junksub() even with an explicit cast.
For example:
Create a class Animal
Create class Dog extends Animal
You cannot forcibly make any Animal a Dog by explicit casting
But a Dog is naturally an Animal (defined in the class hierarchy)
I rewrote your code using the example



Please use code tags when you post code http://www.javaranch.com/ubb/ubbcode.html
regards,
Jyotsna
+Pie Number of slices to send: Send
Hello,
I am confused on this.
From my books, I know that an explicit cast is required when going from a superclass to a subclass. Can anyone explain how or when this can be done?
+Pie Number of slices to send: Send
It can be done only when the reference you are casting actually IS an object of the subclass type. No other case will work.
------------------
  • Ryan Burgdorfer
  • Java Acolyte in
  • Columbus, OH USA
+Pie Number of slices to send: Send
I suggest that you read "How my dog learned Polymorphism" in the Campfire section of the JavaRanch. It discusses these concepts really well (at least it really helped me).

[This message has been edited by Kathy Lynch (edited April 06, 2001).]
+Pie Number of slices to send: Send
Thank you very much for the explanations.
Enjoy the full beauty of the english language. Embedded in this tiny ad:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 1088 times.
Similar Threads
Object Comparison
Doubt on Threads
How create URL object with GET parameters?
Doubt in join().....
Doubt in join().....
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 28, 2024 19:59:45.