Logical Purpose or Usefulness for assigning a sub class object to super class reference
本问题已经有最佳答案,请猛点这里访问。
1 2 | Parent parent = new Child(); parent.someMethod(); |
在什么情况下,像上面这样的协助是有用的,或者背后的逻辑解释是什么?而不是以下内容:
1 2 | Child child = new Child(); child.someMethod(); |
在这两种情况下,无论如何都只调用child方法。那么,为什么允许这种表示呢?这不是设计中允许的不必要的功能吗?
我能想到的唯一原因,取决于我做的一些琐事,是它让你知道,如果在写"parent.somemethod()"时"somemethod()"不在父级中,那么它在父级中是不可用的!
你能告诉我它是如何有用/必要的,并给我一些与面向对象概念相关的观点吗?我知道它与多态性有关,但我不认为有必要使用这种表示。
我们非常欣赏实际的实例。谢谢。
我查了下面的问题,但我觉得我没有我要找的答案。使用超类初始化子类对象Java
它使您有机会对不同的对象采取相同的行为。
例如,
现在,假设您有来自不同类的以下对象。一个人(人类),一辆车(汽车类),一盏灯(灯类)。
您需要编写一个方法来调用每个对象的
1 2 3 4 5 6 7 8 | callToString(Person p) {p.toString();} // A method that accepts person objects. callToString(Car c){c.toString();} // A method that accepts car objecs. callToString(Lamp l){l.toString();} // A method that accepts lamp objects. |
我们知道每3个类都从
1 |
因为这个方法接受了
新方法的用法。
1 2 3 4 5 6 7 | Person john = new Person(); Car ferrari = new Car(); Lamp philips = new Lamp(); callToString(john); callToString(ferrari); callToString(philips); |