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!
Kathy Lynch
Greenhorn
Joined: Feb 26, 2001
Posts: 25
posted
0
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?
ryan burgdorfer
Ranch Hand
Joined: Jan 24, 2001
Posts: 219
posted
0
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. ------------------
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.
Charlie Swanson
Ranch Hand
Joined: Jan 29, 2001
Posts: 213
posted
0
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,
Jyotsna Clarkin
Ranch Hand
Joined: Jan 26, 2001
Posts: 158
posted
0
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
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?
ryan burgdorfer
Ranch Hand
Joined: Jan 24, 2001
Posts: 219
posted
0
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
Kathy Lynch
Greenhorn
Joined: Feb 26, 2001
Posts: 25
posted
0
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).]