java中composition如何实现多态性

   2024-09-29 10070
核心提示:在Java中,组合(Composition)是一种结构型设计模式,它允许一个类包含其他类的对象。多态性是指允许不同类的对象对同一消息做

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

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

首先,创建一个基类Animal
public class Animal {    public void makeSound() {        System.out.println("The animal makes a sound");    }}
然后,创建两个子类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");    }}
接下来,创建一个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();    }}
最后,在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()方法,从而实现了多态性。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号