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?
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. ------------------
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