-2
A
回答
1
没有理由它有事情做与内存回答。它更简单。子类可以通过添加新方法来扩展其超类的行为。虽然没有给出,但超类拥有其子类的所有方法。看看下面的例子:
public class Parent {
public void parentMethod() {}
}
public class Child extends Parent {
public void childMethod() {}
}
现在让我们想想,如果你可以的Parent
一个实例分配给Child
类型的变量会发生什么。
Child c = new Parent(); //compiler error
c
由于是Child
类型的,它允许调用方法childMethod()
。但由于它实际上是一个Parent
实例,它没有此方法,所以这会导致编译器或运行时问题(取决于检查何时完成)。
另一种方式是没有问题的,因为你不能通过扩展一个类删除方法。
Parent p = new Child(); //allowed
Child
是Parent
一个子类,因此继承了parentMethod()
。所以你可以保存地调用这个方法。
+0
谢谢SilverNak^_ ^ –
相关问题
- 1. 为什么不能将静态类变量分配给堆栈?
- 2. 为什么我不能将TextLength分配给Long值类型?
- 3. 为什么我不能在子类中分配变量?
- 4. 为什么这种类型不能分配给参数类型?
- 5. TS:为什么可以将无效类型分配给泛型类型变量?
- 6. 为什么我不能将我的超类对象分配给扩展类?
- 7. 为什么子类不能继承父类的常量?
- 8. 为什么超类分配给子类会给出错误?
- 9. 分配给int类型变量的字变量,它前面有ffff ...为什么?
- 10. 为什么Pagingnation类的变量不能分配?
- 11. C#将派生类分配给基类变量与泛型
- 12. 为什么postgres将不同类型分配给字符串?
- 13. 为什么我不能将循环分配给变量?
- 14. 为什么我不能将Scala对象分配给Java变量?
- 15. 为什么我不能将location.hash分配给一个变量?
- 16. 如何将基类型对象分配给父类型引用?
- 17. 为什么我不能重写父类?
- 18. 为什么我们不能从父类
- 19. $ .grep返回类型为void是不能分配给boolean类型
- 20. C# - 将变体类型的子类转换为父类
- 21. 为什么我可以为变量分配不同类型的值?
- 22. 将子类的实例从父变量赋值给子变量
- 23. 父类的变化类型的变量子类
- 24. 斯威夫特泛型类不能分配给子类
- 25. 为什么我不能将类的名称用作类型?
- 26. 为什么不能在子类中看到父类的方法?
- 27. 将父类初始化变量传递给子类的实例
- 28. 我们如何将输入类型分配给一个变量
- 29. 为什么这种类型的子类变量调用函数?
- 30. 将变量分配给MVC视图类?
这与记忆无关。 –
对象类型之间存在层次关系。每个“狗”都是“动物”,但并非每个“动物”都是“狗”。 –