什么是多态性,它的作用是什么,如何使用它?

什么是多态性,它的作用是什么,如何使用它?

多态性是将一类对象当作父类的能力。

例如,假设有一个名为 "动物 "的类,以及一个继承自 "动物 "的名为 "狗 "的类。多态性是把任何狗的对象当作动物的对象的能力,就像这样。

Dog* dog = new Dog;
Animal* animal = dog;
评论(3)

通常,这指的是A类型的对象能够像B类型的对象一样行事。一些维基百科的链接可以阅读更多内容。

EDIT:修复了破损的链接。

评论(4)

让我们用一个比喻。对于一个给定的音乐剧本,每一个演奏它的音乐家都会在解释中给予自己的触摸。

音乐家可以用接口来抽象,音乐家所属的流派可以是一个抽象的类,它定义了一些全局性的解释规则,每个演奏的音乐家可以用一个具体的类来建模。

如果你是音乐作品的听众,你就有一个对脚本的参考,例如巴赫的《Fuga and Tocata》,而每个演奏它的音乐家都以自己的方式多态地演奏它。

这只是一个可能的设计的例子(在Java中)。

public interface Musician {
  public void play(Work work);
}

public interface Work {
  public String getScript();
}

public class FugaAndToccata implements Work {
  public String getScript() {
    return Bach.getFugaAndToccataScript();
  }
}

public class AnnHalloway implements Musician {
  public void play(Work work) {
    // plays in her own style, strict, disciplined
    String script = work.getScript()
  }
}

public class VictorBorga implements Musician {
  public void play(Work work) {
    // goofing while playing with superb style
    String script = work.getScript()
  }
}

public class Listener {
  public void main(String[] args) {
    Musician musician;
    if (args!=null && args.length > 0 && args[0].equals("C")) {
      musician = new AnnHalloway();
    } else {
      musician = new TerryGilliam();
    }
    musician.play(new FugaAndToccata());
}
评论(1)