我仍然首先阅读工厂模式。我们有一个pizzaStore示例,并尝试本地化我们的pizzaStore类,让franchies自由拥有自己的区域风格。
为此,我们将pizzaStore类更改为抽象类,并将工厂对象移动到" abstract createPizza(String type);"方法。没关系,我理解为什么。
如果你看一下这张照片,我强调了这句话。这是什么意思 ? " 如果我们真的想强制执行,我们可以让方法最终? "
答案 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(),而不是从同名的自有方法调用。