【问题标题】:Please help me with the fallowing polymorphic example [closed]请帮助我解决闲置的多态示例[关闭]
【发布时间】:2014-09-27 01:37:05
【问题描述】:

喂,

请帮我看看下面的多态示例:

    interface Car {}
    class Toyota implements Car {}
    class ToyotaSUV extends Toyota {}
    class Drive {
public static void main(String [] args){
          Car c = new Car();
          Toyota t = new ToyotaSUV();
          Car s = new ToyotaSuv();

}

以上哪些可以实例化,哪些不能实例化?

ToyotaSUV 可以是丰田或/和汽车?

此致,

【问题讨论】:

  • 这不是C++ 这是Java
  • Car 是一个抽象接口类。 ToyotaCar 的基类,ToyotaSUV 是派生自 Toyota 类的子类。话虽如此,你不能实例化一个纯抽象类,Car 就是这样。
  • 你上面写的很好(你试过吗?)。基本上,您可以将实例“向上”投射,意思是-将丰田称为汽车。但并非相反,因为并非每辆车都是丰田。
  • @DrorFichman 不,这不好。 Car c = new Car(); 不好,他们试图实例化一个纯抽象类,这是不允许的。
  • 你显然是对的。我在看多态部分。

标签: c++ oop concept


【解决方案1】:
  1. 不能实例化接口,即不能实例化“汽车”。接口无法实例化,因为它们没有构造函数。
  2. ToyotaSUV 是丰田,可以像汽车一样工作。当您扩展 ToyotaSUV 时,您是在说 ToyotaSuv 是丰田,并且可以做与丰田完全相同的事情。此外,由于 Toyota 实现了该接口,因此可以像 Car 一样工作,您是说 ToyotaSUV 也可以像 Car 一样工作,因为它也继承了这些方法。

【讨论】:

  • 你不能说 ToyotaSuv d = new Car()?
  • 不,你不能那样做,否则你会实例化一个接口(汽车)。你可以做的是 Car c = (Car) new ToyotaSUV()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2013-06-15
相关资源
最近更新 更多