对于类ClassOne来说,它是从ClassTwo扩展而来的,classone是子类,而ClassTwo是超类。如果我去另一个班级并输入:ClassTwo hello = new ClassOne();这是否意味着我只能使用ClassOne中继承自ClassTwo的方法,而不能使用最初在ClassOne中继承的方法? (例如,称为void eat();的方法位于ClassTwo中,并且ClassOne继承了它,但是方法void walk();仅位于ClassOne中,而不位于ClassTwo中,因此,通过使用hello关键字,我可以访问吃功能而不是步行功能?),我不太了解多态的概念。有人可以通过举一个例子很简单地解释它吗?非常感谢你。

最佳答案

是的,是的,关于可用方法,系统会将classOne视为classTwo
我喜欢将这些概念视为存储桶,在这种情况下,classOne可以放入classTwo存储桶中。如果将classOne放入classTwo存储桶,则只能看到classTwo存储桶。但是我可以从classOne存储桶中选择classTwo,也就是可以投射它。

在向上转换和向下转换的情况下,这也有助于将对象强制转换为超类型或子类型。您可以将项目放在篮子中(向上投射),也可以从篮子中取出(向下投射)。

这个比喻可能是胡扯,但对我有帮助:)

要回答您的问题,是的,如果将其转换为classOne,则不能对classTwo中的方法进行方法调用。

这是许多方便的首选。想想interfaces,基本上是一个接口告诉您的对象提供一组方法。这样,我们可以确保调用该对象的每个人(与该对象具有周围环境的契约)都可以使用这些方法。

也可能重复:Try to describe polymorphism as easy as you can

10-07 12:43