抱歉,我之前没有正确表述这个问题。我尝试实现工厂模式。一个更好的例子:它是一个带有 create 函数的抽象类 Human。根据创建时传递的参数,它决定是返回其子类 Man 的实例还是返回 Woman 子类的实例。因此,您可以使用以下命令调用 create:Human john = Human.create("Man");
子类 Man 和 Woman 继承自抽象类 Human,并在与 Human 相同的文件中定义。我不希望可以通过以下方式扩展它:Human lisa = new Human("woman") {};
从主程序来看。谢谢!
EDIT:
感谢您的帮助!我最终使用的解决方案是让类Human成为公共的,以及它的函数create。 Human 构造函数以及 Man 和 Woman 类被声明为“受包保护”。
不要在 A 的类声明中使用可见性说明符,它将是一个包访问类。
编辑以反映有问题的更改:
选项1:
将 Human 包的构造函数设为私有。通过这样做,任何试图在包之外扩展 Human 的类都将失败,因为它无法调用超类的构造函数。
选项2:
坚持我最初的包私有类建议,并使用公共访问工厂类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)