i have 2 classes, called superclass and subclass, i tried to cast the subclass object to superclass, but its seems does not work when i want to use the subclass object from the superclass. Please help to explain. Thanks. These are the code:-
public class superclass
{
public void displaySuper()
}
System.out.println("Display Superclass");
}
}
public class subclass extends superclass
{
public void displaySub()
{
System.out.println("Display Subclass");
}
}
public class Testing
{
public static void main(String args[])
{
subclass sub = new subclass();
superclass sup = (superclass) sub;
when i tried to use the displaySub() from the subclass get error
sup.displaySub(); //the displaySub method cant found
}
}
A superclass cannot know subclasses methods.
Think about it this way:
You have a superclass Pet
You have two subclasses of Pet
, namely: Cat
, Dog
speak
Pet
superclass is aware of these, as all Pet
s can speak (even if it doesn't know the exact mechanics of this operation)Dog
however can do things that a cat cannot, i.e. eatHomework
Dog
to a Pet
, the observers of the application would not be aware that the Pet
is in fact a Dog
(even if we know this as the implementers)eatHomework
of a Pet
You could solve your problem by telling the program that you know sup
is of type subclass
public class Testing
{
public static void main(String args[])
{
subclass sub = new subclass();
superclass sup = (superclass) sub;
subclass theSub = (subclass) sup;
theSub.displaySub();
}
}
You could solve the problem altogether by doing something like this:
public class superclass
{
public void display()
}
System.out.println("Display Superclass");
}
}
public class subclass extends superclass
{
public void display()
{
System.out.println("Display Subclass");
}
}
public class Testing
{
public static void main(String args[])
{
subclass sub = new subclass();
superclass sup = (superclass) sub;
sup.display();
}
}
check out this tutorial on more info: overrides