有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java抽象类来安装其他类

爪哇

理解的简单示例: 两个抽象类,动物和产品

动物有方法生产,以创造新的对象,如牛奶和鸡蛋

扩展抽象类Animal的两个类(鸡和牛)

扩展抽象类产品的两个类(鸡蛋和牛奶)

将有多个鸡、牛、蛋和牛奶的实例

我的问题: 根据动物(鸡或牛)的不同,我的动物抽象类的方法(Product)如何知道要实例化哪个产品(鸡蛋或牛奶)

我尝试的是: 我尝试在我的chicken类中拥有一个egg的静态实例,然后将其作为参数传递给animal构造函数,但这是一个问题,因为我不想在创建chicken实例时创建egg实例。 我想让animal抽象类知道,它是否会根据它被鸡或牛扩展的部分来生成鸡蛋的实例


共 (1) 个答案

  1. # 1 楼答案

    一种方法是把produce()方法也抽象起来,这样ChickenCow类就必须实现它们

    另一个可能更糟糕的设计是传入一个ProductFactory对象,该对象要么是一个茄子工厂,要么是一个可以分别制造鸡蛋或牛奶的牛奶工厂

    但我会选择抽象的produce()技术

    abstract class Animal{
        public abstract Product produce();
    }
    
    class Chicken extends Animal{
    
        public Product produce(){
             return new Egg();
        }
    }