Java

java中composition如何实现多态性

小樊
85
2024-09-24 01:29:01
栏目: 编程语言

在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()方法,从而实现了多态性。

0
看了该问题的人还看了