如果我们真的想强制执行这个,那么制作方法是最终的

时间:2012-11-26 22:04:07

标签: java oop design-patterns

我仍然首先阅读工厂模式。我们有一个pizzaStore示例,并尝试本地化我们的pizzaStore类,让franchies自由拥有自己的区域风格。

为此,我们将pizzaStore类更改为抽象类,并将工厂对象移动到" abstract createPizza(String type);"方法。没关系,我理解为什么。

如果你看一下这张照片,我强调了这句话。这是什么意思 ? " 如果我们真的想强制执行,我们可以让方法最终? "

enter image description here

6 个答案:

答案 0 :(得分:5)

重点是子类应该实现createPizza,但是合同要求覆盖orderPizza,只需要调用它。可以通过使方法最终来强制执行此策略。

当你设计一个继承类时,你通常必须处理这个类应该如何扩展所涉及的所有细节。

答案 1 :(得分:3)

如果你创建一个方法,那么继承该方法的最终类不能覆盖它。这确保了所有子类都使用PizzaStore中的实现。

来源:http://docs.oracle.com/javase/tutorial/java/IandI/final.html

答案 2 :(得分:1)

将方法声明为final,可以防止子类覆盖它。

答案 3 :(得分:1)

如果您使用orderPizza方法最终,则子类中不能override,但您仍然可以访问它们。标记为final cant的方法在子类中被覆盖。

答案 4 :(得分:1)

无法覆盖最终方法,因此任何继承类都具有相同的方法,强制它们具有相同的方法。

答案 5 :(得分:1)

这意味着ChicagoStylePizzaStore不允许覆盖orderPizza()。

java final关键字:final orderPizza()执行子类不能覆盖该方法。

Class Chicago必须从PizzaStorre()调用orderPizza(),而不是从同名的自有方法调用。