我不确定我是否正确地问过这个问题,但是我已经在作业中给出了
ClassA是抽象的
ClassB扩展了A类
然后在ClassB的主要方法中我们有:
ClassA obj = new ClassB();
这里发生了什么,这样做的目的是什么?
答案 0 :(得分:3)
您永远不能创建来自抽象类的对象。永远。期。
在这里,被赋予对象的变量是抽象类型,但变量引用的对象本身不是,也永远不可能。参考变量和参考变量之间的区别是一个必须被理解为推进的关键概念,但是一旦你得到它,你就会去#a; ha!"。
答案 1 :(得分:2)
这确实是多态性的主要部分。首先,是的,您编写的代码正是如何发生的。我认为最简单的理解方法(无论如何)是看游戏的行为方式。
超类物品是抽象的 在这个Item类中,我们有项目的纹理/ ids /名称等的变量。
然后我们制作Item超类的子类,这些类将是更具体区域中的所有项目(例如,武器,货币,食物等)。当然,在他们的课程中,他们会提供有助于使他们脱颖而出的细节。
最后。为什么?好吧,如果你必须加载所有这些项目,那么单独指定所有不同的孩子将是一种绝对的痛苦。例如,您可以将所有子类放入数组,列表或映射中。所有这些都在Item类名下。这样,超类的所有子类都可以放入一个容器中,以便一次轻松操作所有子类。
答案 2 :(得分:1)