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
speak
Pet
超意识到这些,因为所有Pet
S能说话(即使它不知道此操作的确切机制)Dog
然而可以做猫不能做的事情,即eatHomework
Dog
为 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)
查看本教程了解更多信息:覆盖