java中composition如何实现多态性

avatar
作者
筋斗云
阅读量:0

在Java中,组合(Composition)是一种结构型设计模式,它允许一个类包含其他类的对象。多态性是指允许不同类的对象对同一消息做出响应。在Java中,多态性通常通过继承和接口实现。然而,组合也可以实现多态性,通过使用引用类型来指向子类的对象。

以下是一个使用组合实现多态性的示例:

  1. 首先,创建一个基类Animal
public class Animal {     public void makeSound() {         System.out.println("The animal makes a sound");     } } 
  1. 然后,创建两个子类DogCat,它们都继承自Animal类:
public class Dog extends Animal {     @Override     public void makeSound() {         System.out.println("The dog barks");     } }  public class Cat extends Animal {     @Override     public void makeSound() {         System.out.println("The cat meows");     } } 
  1. 接下来,创建一个AnimalContainer类,它包含一个Animal类型的引用:
public class AnimalContainer {     private Animal animal;      public AnimalContainer(Animal animal) {         this.animal = animal;     }      public void setAnimal(Animal animal) {         this.animal = animal;     }      public void performSound() {         animal.makeSound();     } } 
  1. 最后,在main方法中,使用AnimalContainer类来展示多态性:
public class Main {     public static void main(String[] args) {         AnimalContainer container = new AnimalContainer(new Dog());         container.performSound(); // 输出:The dog barks          container.setAnimal(new Cat());         container.performSound(); // 输出:The cat meows     } } 

在这个示例中,我们使用AnimalContainer类的animal引用来存储不同类型的子类对象(DogCat)。当我们调用performSound()方法时,实际执行的是子类对象的makeSound()方法,从而实现了多态性。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!