Jas*_*son 5 java inheritance casting subclass superclass
我有 2 个类,称为超类和子类,我尝试将子类对象转换为超类,但是当我想使用超类中的子类对象时,它似乎不起作用。请帮忙解释一下。谢谢。这些是代码:-
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;
Run Code Online (Sandbox Code Playgroud)
当我尝试使用子类中的 displaySub() 时出现错误
sup.displaySub(); //the displaySub method cant found
}
}
Run Code Online (Sandbox Code Playgroud)
超类不能知道子类的方法。
这样想:
你有一个超类 Pet
你有两个子类Pet,即:Cat,Dog
speakPet超意识到这些,因为所有PetS能说话(即使它不知道此操作的确切机制)Dog然而可以做猫不能做的事情,即eatHomeworkDog为 a Pet,应用程序的观察者将不会意识到Pet实际上是 a Dog(即使我们作为实现者知道这一点)eatHomework一个Pet你可以通过告诉程序你知道sup的类型来解决你的问题subclass
public class Testing
{
public static void main(String args[])
{
subclass sub = new subclass();
superclass sup = (superclass) sub;
subclass theSub = (subclass) sup;
theSub.displaySub();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过执行以下操作来完全解决问题:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
查看本教程了解更多信息:覆盖